2012-09-19 13 views
13

LibGdx'te Actor ile çalışmam için zor bir zaman geçiriyorum. Ben gece yapıları kullanıyorum.Libgdx Aktörümde çalışan olaylar alınamıyor

Benim sahne bir Screen alt sınıfının show() yönteminde kurgusunda:

stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true); 
Gdx.input.setInputProcessor(stage); 
TestActor actor = new TestActor(); 
stage.addActor(actor); 

Ve aktör sınıfı gibi görünür:

class TestActor extends Actor { 
    private Sprite sprite; 
    private TextureAtlas atlas; 

    public TestActor() { 
     atlas = new TextureAtlas(Gdx.files.internal("textures/images-packed.atlas")); 
     sprite = atlas.createSprite("logo-96"); 

     setTouchable(Touchable.enabled); 
     addListener(new InputListener() { 
      public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) { 
       Gdx.app.debug(TestGame.TAG, "TestActor.touchDown()"); 
       return true; // must return true for touchUp event to occur 
      } 
      public void touchUp (InputEvent event, float x, float y, int pointer, int button) { 
       Gdx.app.debug(TestGame.TAG, "TestActor.touchUp()"); 
      } 
     }); 
    } 

    @Override 
    public void draw(SpriteBatch batch, float parentAlpha) { 
     Color color = getColor(); 
     batch.setColor(color.r, color.g, color.b, color.a * parentAlpha); 
     batch.draw(sprite, getX(), getY()); 
    }    
} 

olaylar yangın görünmüyor. Garip bir şekilde, TextButton gibi yerleşik UI widget'ları kullandım ve bu olayları iyi bir şekilde ateş etmeye başlayabilirim. Neyi yanlış yaptığımı gören var mı?

cevap

16

Ayrıca, Bağdaştırıcınızı da aktörünüze ayarlamanız gerekir. (Texture olarak aynı boyutta istiyorsanız) iyi yolu Yapıcınızda şu satırları ekleyin yapmak:

setWidth(sprite.getWidth()); 
setHeight(sprite.getHeight()); 
setBounds(0, 0, getWidth(), getHeight()); 

haber de ilk 2 parametrelerle sınırları konumunu ayarlayabilirsiniz.

+0

Evet! Teşekkür ederim! Bu hatlarda bir şey olup olmadığını merak ediyordum. –