こんにちは、私は小さなゲームを作成していますが、この問題が発生しました。通常の動きや遅い動きをするとイベントは正常に実行されますが、非常に速い動きをするとイベントがクラッシュします。どうすればいいですか?これは私のスプライトの 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;
}
繰り返しますが、問題は素早い動きをしたときだけです。