android - AndEngine 和 TimerHandlers : referencing a member variable in a scene

标签 android andengine

使用 AndEngine GLES2 开发游戏

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

我知道这是一个范围问题,我的问题是,我应该将我需要从 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;
    }
});

最佳答案

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

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

LoadingScreenActivity.this.pRecast.setScaleX(1);

关于android - AndEngine 和 TimerHandlers : referencing a member variable in a scene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464093/

相关文章:

java - 和引擎警报对话框错误

javascript - React Native WebView html <select> 无法在 Android 平板电脑上打开选项

java - Android:服务完成任务后如何启用按钮?

android - 膨胀类 android.support.design.widget.FloatingActionButton 时出错

java - 如何在同一个矩形上进行两次触摸

java - 安卓应用内商店 : How to restore purchases

Android,如何通过锁定屏幕启动 Activity

android - 以纵向方式保存照片

java - andEngine:为什么触摸事件不起作用?

android - 如何在 AndEngine 中使用斜体或粗体创建自定义字体?