gpt4 book ai didi

当我启动一个线程时,Java 游戏一直卡住?

转载 作者:行者123 更新时间:2023-11-29 10:17:01 24 4
gpt4 key购买 nike

我正在制作 above 模式的 2D Zombie Shooter,我在线程方面遇到了一些问题。这是交易。每次我按下空格时,我都会让角色射出一颗子弹。问题是如果你保持空间,它会发射一颗,然后暂停,然后发射很多子弹。有很多方法可以解决这个问题,但我想要这种方法,因为它为 future 改变拍摄速度留下了空间。这是导致问题的线程的代码:

package threads;

import Game.GameCore;

public class Shoot extends GameCore implements Runnable {

/**
* WHEN I START THIS THREAD, THE ENTIRE GAME FREEZES, AND I DO NOT KNOW
* WHY... NEED TO FIX. IT DOES NOT FIX THE PROBLEM TO TAKE OUT THE "SHOOT"
* OR THE "SLEEP"...
*/

public void run() {
while (shooting && gameRunning) { // shooting is made true when space is
// pressed, and set false when space
// is released. gameRunning is true
// if the game is running, which it
// is. removing either of these
// doesnt work either.
player.shoot(); // player comes from the GameCore class, and
// represents the player entity. if i remove this,
// nothing changes.

try {
Thread.sleep(bulletShootSpeedMillis); // bulletShootSpeedMillis
// is equal to 1000, but
// makes no difference
// to change
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

}

这就是该死的问题。评论有点指出它们,但我会列出它们。如果我删除明显的东西,例如 player.shoot();Thread.sleep(bulletShootSpeedMillis); 甚至 while 循环中的一个东西,没有任何改变.问题是当我初始化线程时,用

else if (key == Integer.parseInt(commands[6])) {
shooting = true;
new Thread(new Shoot()).run();
}

整个游戏都卡住了。什么都没有发生。当我用空格启动线程时,我的游戏卡住了,我不明白为什么!!!以前的版本:

else if (key == Integer.parseInt(commands[6])) {
player.shoot();
}

它工作得很好。请帮忙!提前致谢! :)

编辑:感谢您的快速回答。不用说,简单错误的主要学习经验XD

最佳答案

哎呀呀!

new Thread(new Shoot()).run(); // ***** !!!!

您不能通过调用线程的 run() 方法来启动线程,因为所做的只是调用与调用代码相同的线程中的代码。您通过调用 start() 方法启动一个线程。

关于当我启动一个线程时,Java 游戏一直卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com