我目前正在试验一款类似太空入侵者的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;发布于 2013-03-22 05:42:19
你可以在Javascript中使用WebWorkers,但它们与真正的多线程环境不同,就像在java中一样。你将不得不采取一种不同的方法来开发你的游戏,使用一种轮询技术在同一线程下更新你的游戏逻辑,抱歉。:(在javascript中添加的对线程的支持仍然是非常笨拙的,在我看来几乎是一个花招,唯一存在的是Chrome,因为你不一定要复制所有传递到线程的数据。这就是为什么javascript中的线程会受到限制:
WebWorkers有很大的潜力,但对我来说,它们的使用受到目前所受限制的严重限制。也许你可以在你的游戏中发现它们的巧妙用法。
发布于 2013-03-22 05:44:10
传统上,JavaScript是单线程的,所以使用您在Java语言中习惯的线程是不可行的。JavaScript的一个相对较新的补充是web workers (spec here),它提供真正的多线程。然而,support among browsers在某种程度上是可变的,您受到工作线程所能做的工作的限制,并且线程之间的通信是痛苦的。
您还可以使用诸如Clumpy.js之类的东西来模拟异步执行。
无论你做什么,重要的是不要阻塞主线程。整个浏览器窗口将变得无响应。
https://stackoverflow.com/questions/15558563
复制相似问题