Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在无数码屏幕控制的情况下移动屏幕中的精灵_Android_Andengine - Fatal编程技术网

Android 在无数码屏幕控制的情况下移动屏幕中的精灵

Android 在无数码屏幕控制的情况下移动屏幕中的精灵,android,andengine,Android,Andengine,我想让程序,当用户按下屏幕右侧的动画移动到右侧,当在左侧时,移动到左侧。 这里的代码不起作用 if (pSceneTouchEvent.getY() > 400) { AnimatedSprite _AnimSprite = new AnimatedSprite(70, 400, _TiledSprite_TR); _AnimSprite.registerEntityModifier(new MoveModifier(5, 70, Camera_width - _A

我想让程序,当用户按下屏幕右侧的动画移动到右侧,当在左侧时,移动到左侧。 这里的代码不起作用

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);
                            }
                            }        
if(pSceneTouchEvent.getY()>400)
{
AnimatedSprite _AnimSprite=新的AnimatedSprite(70400,_TiledSprite_TR);
_AnimSprite.registerEntityModifier(新的移动修改器(5,70,相机宽度
-_AnimSprite.getWidth(),400400));
_动画(50);
xPos=_TiledSprite_TR.getTexturePositionX();
}
其他的
{
如果((pSceneTouchEvent.getY()<400)和
pSceneTouchEvent.getY()>0)
{
AnimatedSprite\u AnimSprite=新建
动画精灵(70400,平铺精灵);
_AnimSprite.registerEntityModifier(新移动修改器)(5,
400,Camera_width-_AnimSprite.getWidth(),70400);
_动画(50);
xPos=_TiledSprite_TR.getTexturePositionX();
}
否则{
精灵=新精灵(xPos,400,Sprite\uTR);
主场景。附件(精灵);
}
}        

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

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

(可能我可以使用不可见的大数字控件,但我不知道如何更改控件大小。您的相机宽度和相机高度设置为多少?我建议在if语句中使用宽度和高度的相对值。