Android同步绘图和更新

时间:2014-07-07 07:12:13

标签: android null draw game-loop

我正在开发一款游戏的重置按钮。该按钮只是从游戏中移除东西以将其恢复到原始状态。但是,在尝试这样做时,我遇到了Null Pointers的问题。我在每个对象中都有一个destroy()方法,它将所有指针设置为null。然后我将对该对象的所有引用设置为null。但是,我有时会在要删除的对象的draw方法中收到这些null异常。我唯一能想到的是update方法将对象的属性设置为null,但在我将游戏面板对该对象的引用设置为null之前,调用draw方法,看到该对象不为null,然后尝试调用其draw方法(导致null错误)。但我不明白这是怎么发生的。以下是我用来运行游戏循环的AsyncTask的摘录:

try {
            synchronized (surfaceHolder) {
                skipped = 0;

                long currentTime = System.currentTimeMillis();
                long frameTime = currentTime - previousFrameTime;
                previousFrameTime = currentTime;

                gamePanel.update(frameTime / 1000.0);
                canvas = surfaceHolder.lockCanvas();
                gamePanel.draw(canvas);
                surfaceHolder.unlockCanvasAndPost(canvas);

                sleep = (int)(TARGET_FRAME_PERIOD - frameTime);

                if (sleep > 0) {
                    try {
                        Thread.sleep(sleep);
                    } catch(InterruptedException e) {}
                }
            }
} finally {}

0 个答案:

没有答案