有没有办法让sprite可以拖动但只有当sprite本身被触摸时?目前我有我的游戏,它使用了发动机,设置到精灵跟随你的手指从那里触摸场景的时间。如果你触摸场景的另一侧,精灵会被“传送”,这是我不想要的。
我尝试覆盖精灵的onAreaTouched方法,并将其坐标设置为手指当前的位置,但这并不能很好地工作。如果你做出突然的动作,那么扯淡就会消失。
有没有简单的方法来实现这个目标?
答案 0 :(得分:0)
回答我自己的问题......我使用了这段代码并且完美无缺:
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;
}
});`