我有一个简单的问题。屏幕上有一个按钮。我希望isActionDown按下按钮,而isActionUp再次按下按钮,使我的角色跳起来。但是问题是,如果我按下按钮并向其拖动,按钮将保持按下状态。如果用户将其拖离按钮,我希望按钮再次向上推。
如何创建所需的效果? isActionCancel似乎无法解决问题。
private void addButton(){
goB = new AnimatedSprite(240, 364, ResourceManager.getInstance().go_region, vbom){
@Override
public boolean onAreaTouched(final TouchEvent event, final float x, final float y){
if (event.isActionDown()){
goB.animate(new long[]{ 250 }, new int[] { 1 }, true);
/*if(event.isActionCancel()){
goB.animate(new long[]{ 250 }, new int[] { 0 }, true);
}*/
}
if (event.isActionUp()){
goB.animate(new long[]{ 250 }, new int[] { 0 }, true);
fresh = true;
playerBody.applyLinearImpulse(new Vector2(0, 45), playerBody.getPosition());
}
if (event.isActionCancel() || event.isActionOutside()){
goB.animate(new long[]{ 250 }, new int[] { 0 }, true);
}
return true;
}
};
goB.setScale(3);
registerTouchArea(goB);
attachChild(goB);
goB.animate(250);
}
我在这方面经历了最艰难的时刻,并且我尝试了上面代码的各种变体。如果您有解决方案,请告诉我。
谢谢你的帮助!
最佳答案
使用
setTouchAreaBindingOnActionDownEnabled(true);
setTouchAreaBindingOnActionMoveEnabled(true);
功能