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