嗨,我正在制作一个小游戏并遇到了这个问题,当我进行正常或慢速移动时,事件运行良好,但是当我进行非常快的移动时,事件崩溃。请问我能做什么?这是我的 Sprite 的 onAreaTouch 事件:
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
int posInicial=estadoCarta;
switch(pSceneTouchEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
posX=getX()-getWidth()/2;
posY=getY()-getHeight()/2;
this.setScale(1.2f);
break;
case MotionEvent.ACTION_MOVE:
switch(estadoCarta){
case POS_PJ1:
this.setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2, pSceneTouchEvent.getY() - this.getHeight() / 2);
if(pSceneTouchEvent.getY()<=430){
this.setAlpha((float) 0.5);
estadoCarta=POS_SELECIONADO_MESA;
}
break;
case POS_SELECIONADO_MESA:
this.setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2, pSceneTouchEvent.getY() - this.getHeight() / 2);
if(pSceneTouchEvent.getY()>430){
this.setAlpha((float) 1);
estadoCarta=POS_PJ1;
}
break;
}
break;
case MotionEvent.ACTION_UP:
this.setScale(1.0f);
switch(estadoCarta){
case POS_PJ1:
setPosition(posX+getWidth()/2,posY+getHeight()/2);
estadoCarta=posInicial;
break;
case POS_SELECIONADO_MESA:
Posicion pos=escena.getPosicionLibre();
this.setPosition(pos.x, pos.y);
escena.Juega(this);
break;
}
break;
default:
this.setScale(1.0f);
switch(estadoCarta){
case POS_PJ1:
setPosition(posX+getWidth()/2,posY+getHeight()/2);
estadoCarta=posInicial;
break;
case POS_SELECIONADO_MESA:
Posicion pos=escena.getPosicionLibre();
this.setPosition(pos.x, pos.y);
escena.Juega(this);
break;
case POS_MESA:
this.setAlpha(0.5f);
estadoCarta=POS_PARA_JUGAR;
break;
case POS_PARA_JUGAR:
this.setAlpha(1f);
estadoCarta=POS_MESA;
break;
}
break;
}
return true;
}
我重复这个问题,只有当我快速移动时。