Переместить спрайт в AndEngine без цифрового управления экраном - PullRequest
0 голосов
/ 28 марта 2012

Я хотел бы сделать программу, чтобы при нажатии пользователем правой части экрана анимация перемещалась вправо, а при левой - влево. Здесь код не работает

if (pSceneTouchEvent.getY() > 400)
 {
     AnimatedSprite _AnimSprite = new AnimatedSprite(70, 400, _TiledSprite_TR);
_AnimSprite.registerEntityModifier(new MoveModifier(5, 70, Camera_width
     -  _AnimSprite.getWidth(), 400, 400));
                        _AnimSprite.animate(50);
                        xPos = _TiledSprite_TR.getTexturePositionX();
  }
                    else
     {
                        if ((pSceneTouchEvent.getY() < 400)&& 
  pSceneTouchEvent.getY() > 0))
      {
                            AnimatedSprite _AnimSprite = new 
       AnimatedSprite(70, 400, _TiledSprite_TR);
                            _AnimSprite.registerEntityModifier(new MoveModifier(5, 
             400, Camera_width - _AnimSprite.getWidth(), 70, 400));
                            _AnimSprite.animate(50);
                            xPos = _TiledSprite_TR.getTexturePositionX();       
               }
                        else{                                   
              Sprite _Sprite = new Sprite(xPos, 400, _Sprite_TR);
                                MainScene.attachChild(_Sprite);
                            }
                            }        

Ответы [ 2 ]

0 голосов
/ 06 апреля 2012

Мне кажется, что вы генерируете новый спрайт при каждом прикосновении к экрану. Это, вероятно, не то, что вы хотите сделать. Я бы посоветовал вам расширить свой основной класс (обычно BaseGameActivity или аналогичное действие), чтобы использовать IOnSceneTouchListener, чтобы вы могли одновременно получать доступ к сенсорным данным и иметь доступ к вашим animatedSprites вместо создания нового IOnSceneTouchListener, который не может получить доступ к любому ваших анимированных спрайтов.

public class Game extends BaseGameActivity implements IOnSceneTouchListener
{
        private AnimatedSprite animatedSprite;
        @Override
    public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) 
    {
        // Access your animated sprites here and make them move based on the touch data
        return true;
    }
}

Что-то в этом роде.

0 голосов
/ 30 марта 2012

Почему pSceneTouchEvent.getY ()? Это вверх / вниз, а не влево / вправо. Я думаю, что вы, вероятно, всегда касаетесь области, у которой координата Y меньше 400. Попробуйте заменить на getX () и посмотрите, что произойдет.

...