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

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

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);
                            }
                            }        

person user1298718    schedule 28.03.2012    source источник
comment
Какое значение у ваших CAMERA_WIDTH и CAMERA_HEIGHT? Я бы предложил использовать относительные значения для вашей ширины и высоты в ваших операторах if.   -  person Lokiare    schedule 06.04.2012


Ответы (2)


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

person JohnEye    schedule 30.03.2012
comment
Это не работает (( Может быть, я могу использовать невидимый большой цифровой элемент управления, но я не знаю, как я могу изменить размер элемента управления. - person user1298718; 30.03.2012

Мне кажется, что вы генерируете новый спрайт каждый раз, когда касаетесь экрана. Это, вероятно, не то, что вы хотите сделать. Я бы посоветовал вам расширить свой основной класс (обычно ваш BaseGameActivity или аналогичную активность), чтобы использовать IOnSceneTouchListener, чтобы вы могли как получать доступ к сенсорным данным, так и иметь доступ к вашим анимированным спрайтам, вместо создания нового 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;
    }
}

Что-то в этом духе.

person Lokiare    schedule 06.04.2012