我目前正在尝试类似于太空入侵者的JavaScript射击游戏。它现在的编码方式,无论是移动的抛射物还是船只。任何玩过原版的人都知道这不好。我记得在我的Java课程中进行多线程处理,并想知道这是否是正确的方法,还是有另一种方法可以做到这一点?例如:
Thread Move start;
Thread Move run;
Thread Shoot start;
Thread Move run;
Thread Shoot run;
Thread Shoot end;
Thread Move run;
Thread Move end;
答案 0 :(得分:2)
您可以在Javascript中使用WebWorkers,但它们与真正的多线程环境无关,就像在java中一样。您将不得不采用不同的方法进行游戏开发,使用一种循环技术在同一个线程下更新游戏的逻辑,抱歉。 :(在javascript中为线程添加的支持仍然非常笨拙,而且在我看来几乎是一个噱头,唯一一个有Chrome的人,因为你不一定要复制传递给线程的所有数据。这就是为什么线程在javascript中是hamstrung:
由于WebWorkers具有巨大的潜力,但对我而言,他们的使用受到此时对他们的限制的严重限制。也许你可以在游戏中找到聪明的用途。
答案 1 :(得分:2)
传统上,JavaScript是单线程的,因此使用Java中习惯的线程是不可行的。 JavaScript的最新成员是web worker(spec here),它提供了真正的多线程。但是,support among browsers在某种程度上是可变的,你对工作线程可以做的事情有所限制,并且线程之间的通信是痛苦的。
您还可以使用Clumpy.js之类的东西来模拟异步执行。
无论你做什么,重要的是不要阻止主线程。整个浏览器窗口都没有响应。