android - 每 3 秒在屏幕上创建和显示游戏对象

标签 android multithreading seconds

我无法每 3 秒在屏幕上创建和显示多个游戏对象。当只有一个对象时没有问题,但是如果我想创建多个对象,就会出现问题。详细解释一下,有一个主游戏循环(与互联网上现有的游戏循环相同),在该游戏循环中,我希望每 3 秒创建一个新对象,添加到 ArrayList,然后更新游戏面板每 3 秒显示一次屏幕上的所有对象。上面的代码块有效,但它太快了,所以屏幕上充满了图像,我希望它是周期性的。我必须做什么?如果使用后台线程以防止 UI 线程阻塞,我该怎么做?

提前致谢。

这是我的代码块: 主线程部分:

    while (running) {
        canvas = null;          
        try {
            canvas = this.surfaceHolder.lockCanvas();
            synchronized (surfaceHolder) {
                beginTime = System.currentTimeMillis();

                this.gamePanel.update();

                this.gamePanel.render(canvas);          

            }
        } finally {
            if (canvas != null) {
                surfaceHolder.unlockCanvasAndPost(canvas);
            }
        } // end finally
    }

和我的 MainGamePanel 类中的更新方法: 公共(public)无效更新(){

    int random = 5 + (int) (Math.random() * (200 - 5));
    droid = new Carrier(BitmapFactory.decodeResource(getResources(),
            R.drawable.image), random, 1);
    Carriers.add(Carrier);

    for (int i = 0; i < Carriers.size(); i++) {
        Carrier CarrierTemp = Carriers.get(i);
        CarrierTemp .update();
    }
}

最佳答案

这是一个基于您当前代码的解决方案:

把这个放在你的线程的某个地方:

int savedtime = 0;
long lastTime;

在你的 update() 方法中:

//Calculate time since last update:
long now = System.currentTimeMillis();
savedtime += now - lastTime;
lastTime = now;
if(savedTime > 3000){//if more than three seconds have passed:
    savedTime = 0;
    int random = 5 + (int) (Math.random() * (200 - 5));
    droid = new Carrier(BitmapFactory.decodeResource(getResources(),R.drawable.image), random, 1);
    Carriers.add(Carrier);
}
for (int i = 0; i < Carriers.size(); i++) {
    Carrier CarrierTemp = Carriers.get(i);
    CarrierTemp .update();
}

关于android - 每 3 秒在屏幕上创建和显示游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604487/

相关文章:

java - 改进在 Json 响应中访问多个模型

java - 将字节码转换为 dex 时出错 :

Java服务器客户端线程问题

multithreading - 常规-线程池中的线程数

java - 同步的java线程错误的输出顺序

c# - 有没有办法计算开机后的秒数?

选择帐户后,带有 Google Drive API 的 Android 应用程序卡住了。为什么?

java - 为什么我不能在java中连接到mysql数据库?

python - Pandas 如何截断分钟,秒 pandas.tslib.Timestamp

java - 如何让 Java 程序在几秒钟后退出