我从 Andengine 开始,当我触摸屏幕(而不是精灵)时很难移动我的精灵。我真的需要你的帮助,非常感谢。
这是我的代码:
@Override
protected Scene onCreateScene() {
final Scene scene = new Scene();
Sprite backgroundSprite = new Sprite(0, 0, this.mBackgroundTextureRegion, getVertexBufferObjectManager());
scene.attachChild(backgroundSprite);
Carl carl = new Carl(1, 30, 361, this.carl, getVertexBufferObjectManager()){
};
scene.attachChild(carl);
this.mStack1.add(carl);
carl.setmStack(mStack1);
scene.registerTouchArea(carl);
scene.setTouchAreaBindingOnActionDownEnabled(true);
return scene;
}
public boolean onTouchEvent(MotionEvent event, Carl carl) {
carl.setPosition(carl.getX() +2,carl.getY() );
return true;
}
你可以实施IOnSceneTouchListener
接口,而不是重写 onSceneTouchEvent 方法,您可以在其中用球进行操作
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
carl.setPosition(carl.getX() +2,carl.getY() );
return false;
}
但不要忘记添加这个scene.setOnSceneTouchListener(this);
to protected Scene onCreateScene()
EDIT:
boolean canGo = false;
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_DOWN)
canGo = true;
if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_UP)
canGo = false;
return false;
}
这会增加你的public Scene onCreateScene() {
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {}
@Override
public void onUpdate(float pSecondsElapsed) {
// TODO Auto-generated method stub
if (canGo)
ball.setPosition(ball.getX() + 2, ball.getY());
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)