让精灵可以拖动当触摸
问题描述:
有没有办法让精灵拖动,但只有当精灵本身被触摸?目前,我有我的游戏,它使用anengine,设置精灵跟随你的手指在场景被触及时的位置。如果你触摸场景的另一面,精灵会“传送”,这是我不想要的。让精灵可以拖动当触摸
我试着覆盖精灵的onAreaTouched方法,并将它的坐标设置为你的手指目前的位置,但这不太适用。如果你突然动作,拖延性就会消失。
有没有简单的方法来完成这个?
答
回答我的问题......我用这个代码,它完美地工作:
draggableSprite = new Sprite(CAM_WIDTH/2, CAM_HEIGHT/2,
spriteTextureRegion, mVertexBufferObjectManager){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
if(pSceneTouchEvent.isActionMove()){
spriteIsTouched = true;
}
else{
spriteIsTouched = false;
}
return super
.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
scene.attachChild(draggableSprite);
scene.registerTouchArea(draggableSprite);
scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
// TODO Auto-generated method stub
if(spriteIsTouched){
draggableSprite.setPosition(pSceneTouchEvent.getX() - (draggableSprite.getWidth()/2), pSceneTouchEvent.getY() - (draggableSprite.getHeight()/2));
//This sets the position of the sprite and then
//offsets the sprite so its center is at your finger
}
return false;
}
});`