1

AndEngine GLES2 を使用したゲームの開発

TimerHandlers コールバック内からシーンに追加した四角形のスケールを変更しようとすると問題が発生します。タイマーが作動するたびにパーセンテージの計算が行われ、OnTimePassed ITimerCallback 内でシーン内の四角形のスケールを設定しようとします。長方形を静的として宣言しない限り、nullreferenceexception エラーが発生し続けます。

これはスコープの問題であることはわかっています。私の質問は、timercallback 内からアクセスする必要があるオブジェクトを static として宣言する必要があるか、または timercallback 内から Activity レベルのオブジェクトにアクセスするための「受け入れられる方法」があるかということです。

PlayerRecastTimer = new TimerHandler(0.5f, true, new ITimerCallback(){
    private float recastTime = playerSpellToCast.getRecastTime();

    public void onTimePassed(TimerHandler pTimerHandler) {
        if(recastTime == 0) {
            mAct.GetEngine().unregisterUpdateHandler(pTimerHandler);
            mAct.GetQueue().RemovePlayerSpell();
            pRecast.setScaleX(1);
            RunScene();
        }

        float recastScale;

        recastScale = recastTime / playerSpellToCast.getRecastTime();
        pRecast.setScaleX(recastScale); //blows up here when attempting to scale the rectangle
        recastTime -= 0.5;
    }
});
4

1 に答える 1