在没有digitalonscreencontrol的情况下在AndEngine中移动精灵

时间:2012-03-28 16:28:41

标签: android 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);
                            }
                            }        

2 个答案:

答案 0 :(得分:0)

为什么选择pSceneTouchEvent.getY()?这是上/下,而不是左/右。我想你可能总是触摸Y坐标小于400的区域。尝试用getX()替换,看看会发生什么。

答案 1 :(得分:0)

在我看来,每次触摸屏幕时都会生成一个新的精灵。这可能不是你想要做的。我建议你扩展你的主类(通常是你的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;
    }
}

这些方面的东西。