按钮触摸错误

时间:2013-10-26 19:24:50

标签: android andengine

我正在用Andengine开发一款游戏。我在游戏控制器按钮上使用了HUD。但我有一个错误。错误是:当我按下按钮并在没有isActionUp的情况下将手指移到buttun外面时,按钮永远被压迫。我怎么解决这个问题? 我尝试过.isActionOutside()功能,但它不起作用!

我使用的按钮代码:

ButtonSprite left = new  ButtonSprite(75, 75, ResourcesManager.getInstance().leftButtonRegion, vbom) {
        @Override
        public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
            if(pTouchEvent.isActionDown()) {
               this.setCurrentTileIndex(1);
               player.moveX(-3);
            }
            if(pTouchEvent.isActionOutside() || pTouchEvent.isActionUp()) {
                this.setCurrentTileIndex(0);
                player.stopMovingX();
             }
            return super.onAreaTouched(pTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
        }
    };
    gameHUD.registerTouchArea(left);
    gameHUD.attachChild(left);

3 个答案:

答案 0 :(得分:0)

您应该至少获得ACTION_UPACTION_OUTSIDE中的一个,具体取决于用户的操作。我建议你调试你得到的所有TouchEvent,即在Log方法中添加onTouchEvent调用行,看看当手指离开按钮时会得到什么事件。 / p>

我建议的另一个选项是检查本地触摸坐标(pTouchAreaLocalXpTouchAreaLocalY)。当手指离开按钮时,你可能会得到最后一个TouchEvent,所以将坐标与按钮的大小进行比较(因为按钮是75x75,如果其中一个坐标是< 0或> 75,那么它是在按钮外面。)

答案 1 :(得分:0)

gameHUD = new HUD();

ButtonSprite left = new  ButtonSprite(75, 75, ResourcesManager.getInstance().leftButtonRegion, vbom) {
        @Override
        public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
            if(pTouchEvent.isActionDown()) {
               this.setCurrentTileIndex(1);
               player.moveX(-3);
            }
            if(pTouchEvent.isActionOutside() || pTouchEvent.isActionUp()) {
                this.setCurrentTileIndex(0);
                player.stopMovingX();
             }
            return super.onAreaTouched(pTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
        }
    };
gameHUD.registerTouchArea(left);
gameHUD.attachChild(left);

camera.setHUD(gameHUD);

答案 2 :(得分:0)

gameHUD.setTouchAreaBindingOnActionDownEnabled(true); 

这条线很有效。感谢您的关注..