0

嗨,我在让我的精灵淡入淡出时遇到了一些问题。我使用并行实体修改器、缩放和淡入淡出,之后精灵获得新的 X 和 Y 坐标并淡入和缩放。它不起作用,我认为它可能与 onUpdate 方法有关。

XOsprite = new Sprite(x, y, XO, engine.getVertexBufferObjectManager()) {

        @Override
        public boolean onAreaTouched(final TouchEvent te, final float xVal,
                final float yVal) {




            XOsprite.registerEntityModifier(downOut);  //kill sprite
            isKilled = true;
            XOsprite.registerUpdateHandler(new IUpdateHandler() {

                @Override
                public void reset() {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onUpdate(float pSecondsElapsed) {
                    // TODO Auto-generated method stub

                    totalElapsedTime += pSecondsElapsed;
                    if(totalElapsedTime >= 3.0f){

                        BaseGameActivity gameActivity = (BaseGameActivity) activity;
                        gameActivity.runOnUpdateThread(new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                if(isKilled){
                                    reviveSprite();
                                    isKilled = false;
                                }
                            }
                        });

                    }
                    //reset();
                }
            });

            return true;

        }
    };





    XOsprite.registerEntityModifier(inUp);



    gameScene.attachChild(XOsprite);
    gameScene.registerTouchArea(XOsprite);

    return gameScene;
}

-编辑-更多代码

public void reviveSprite(){

    setSprites();
    XOsprite.unregisterEntityModifier(downOut);
    XOsprite.registerEntityModifier(inUp);
}
public void setSprites(){

    if (rand.nextInt(2) == 0) {
        XO = X;
    } else {
        XO = O;
    }

        x = rand.nextInt(MainActivity.CAM_WIDTH);
        y = rand.nextInt(MainActivity.CAM_HEIGHT);

}
4

1 回答 1

0

您已经在 UpdateThread 上,因此无需执行此操作

gameActivity.runOnUpdateThread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            if(isKilled){
                                reviveSprite();
                                isKilled = false;
                            }
                        }
                    });

就这样做

                            if(isKilled){
                                reviveSprite();
                                isKilled = false;
                            }
于 2013-09-03T12:22:44.847 回答