AndEngine和TimerHandlers:引用场景中的成员变量

时间:2012-05-05 17:07:01

标签: android andengine

使用AndEngine GLES2开发游戏

我在尝试更改从TimerHandlers回调中添加到场景中的矩形的比例时遇到问题。每当计时器滴答时,它进行百分比计算,然后在OnTimePassed ITimerCallback中,它尝试设置场景中矩形的比例。除非我将矩形声明为静态,否则我将继续收到nullreferenceexception错误。

我知道这是一个范围问题,我的问题是,我是否应该将我需要从timercallback中访问的对象声明为静态,或者是否有一种“可接受的方式”来从一个内部访问Activity级别对象timercallback?

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;
    }
});

1 个答案:

答案 0 :(得分:2)

如果您的PlayerRecastTimer是包含pRecast的类的成员,则可以使用ClassName.this引用它。

示例:如果您有一个名为LoadingScreenActivity的类,并且它有一个名为pRecast的矩形,那么您可以使用pRecast函数中的onTimePassed() >

LoadingScreenActivity.this.pRecast.setScaleX(1);