Actor no toma toque libGDX

Intento manejar el toque de uno de los Actor en el escenario. El siguiente es el código que he escrito:

 public class MyGame extends ApplicationAdapter { private GameStage gameStage; //Game stage is custom stage class. @Override public void create () { gameStage = new GameStage(); Gdx.input.setInputProcessor(gameStage); //Set the input processor } @Override public void dispose() { super.dispose(); gameStage.dispose(); } @Override public void render () { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); gameStage.act(Gdx.graphics.getDeltaTime()); gameStage.draw(); } } 

Ahora en la class GameStage :

 public class GameStage extends Stage implements ContactListener { MyActor myActor; //Custom actor object. public GameStage() { super(new ScalingViewport(Scaling.fill, Constants.APP_WIDTH, Constants.APP_HEIGHT, new OrthographicCamera(Constants.APP_WIDTH, Constants.APP_HEIGHT))); setUpWorld(); //Code to setup the world. added background and other actors. none of them are touchable. addActor(); } private void addActor() { myActor = new MyActor(100, 100, 100, 100, 1000, 0); myActor.setTouchable(Touchable.enabled); myActor.addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { actorTouched(); //This method is not getting triggenetworking becaused the call never comes in this function. return true; } }); addActor(myActor); } } 

La class de actor personalizado inicializa al actor con una image de sprite.

 public class MyActor extends Actor { public MyActor(int startX, int startY, int startWidth, int startHeight, int endX, int speed) { TextureAtlas textureAtlas = new TextureAtlas(Gdx.files.internal(Constants.ATLAS_PATH)); TextureRegion[] runningFrames = new TextureRegion[Constants.MOVING_REGION_NAMES.length]; for (int i = 0; i < Constants.MOVING_REGION_NAMES.length; i++) { String path = Constants.MOVING_REGION_NAMES[i]; runningFrames[i] = textureAtlas.findRegion(path); if (horizontalMovingDirection == MovementDirection.Right) { runningFrames[i].flip(true, false); } } } //code to draw and animate in a straight line by overriding the draw and act methods. } 

¿Estoy haciendo algo mal aquí? ¿Por qué no estoy recibiendo el toque en el actor?

Descubrí la solución. El problema era que los Listeners solo funcionarían después de establecer un límite para nuestro Actor . No había establecido ningún límite, así que no estaba tomando los toques. Ahora establezco los límites en el método draw() para que se actualice cada vez que se mueve el actor y funciona como un amuleto.

 @Override public void draw(Batch batch, float parentAlpha) { super.draw(batch, parentAlpha); setBounds(currentAnimationBounds.x, currentAnimationBounds.y, currentAnimationBounds.width, currentAnimationBounds.height); //Rest of the code }