【问题标题】:Andengine onAreaTouch with fast moves stops moving and dont make action upAndengine onAreaTouch 快速移动停止移动并且不采取行动
【发布时间】:2013-07-15 04:09:38
【问题描述】:

您好,我正在制作一个小游戏并遇到了这个问题,当我进行正常或慢速移动时事件运行良好,但当我进行非常快速移动时,事件崩溃。请问我能做什么? 这是我的 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;
}

我再说一遍,问题只是当我快速移动时。

【问题讨论】:

  • 你得到什么错误信息?
  • 我没有收到任何错误。但是当我快速移动手指时,精灵停止移动并且之后不做任何动作。我想采取行动并采取任何行动,不要用任何事件停止触摸区域事件
  • 整个应用程序是否变得无响应?还是只有那一个精灵?

标签: performance touch andengine


【解决方案1】:

解决了!!! 我在可能的主要游戏活动的 EngineOptions onCreateEngineOptions() 中使用此代码:

public EngineOptions onCreateEngineOptions()
{
    camera = new BoundCamera(0, 0, 800, 480);
    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), this.camera);
    engineOptions.getAudioOptions().setNeedsMusic(true).setNeedsSound(true);
    engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
    engineOptions.getTouchOptions().setTouchEventIntervalMilliseconds(1);
    return engineOptions;
}

这有助于我将正常的 20 毫秒转换减少到 1。然后触摸效果响应更快!

【讨论】:

  • setTouchEventIntervalMilliseconds(1) 这个方法是 GLES 1 还是 GLES 2 ?目前我正在使用 AndEngine 库,但上面的方法不存在。所以对相同的问题有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
相关资源
最近更新 更多