我想知道是否有关于如何在 ActionScript 中实现多线程或“绿色线程”的代码或类库。
正如您可能已经看到的,Scott Peterson 正在开发某种工具集,但除了他在 Adobe MAX Chicago 活动中的表现之外,我没有找到更多关于此的信息。
问候尼古拉斯
我想知道是否有关于如何在 ActionScript 中实现多线程或“绿色线程”的代码或类库。
正如您可能已经看到的,Scott Peterson 正在开发某种工具集,但除了他在 Adobe MAX Chicago 活动中的表现之外,我没有找到更多关于此的信息。
问候尼古拉斯
这是 Drew Cummins 的绿色线程库:
It's an old article, but quasimondo's method of launching multiple swfs and then sharing the data over a LocalConnection may also be of interest. They were saying that the back and forth of using the LocalConnection may eat up a few cycles, but if the iterations being processed are complex enough it shouldn't be too much of a problem.
在 ActionScript 中没有内置的方式来执行绿色线程。您必须编写代码来处理它。
制作一个函数,对您想要执行的任何操作执行一次迭代。它应该返回 true 或 false 取决于它的工作是否完成。现在,您必须计算 ENTER_FRAME 事件下一次屏幕更新的时间间隔。这可以使用 flash.utils.getTimer 来完成。
start = getTimer();
//thread is a ui component added to system manager that is redrawn each frame
var fr:Number = Math.floor(1000 / thread.systemManager.stage.frameRate);
due = start + fr;
继续执行你的函数,同时每次检查函数的返回值,并通过比较 getTimer() 和到期时间来检查是否超过了到期时间。
这已由 Alex Harui 在博客条目 - ActionScript 中的线程中实现为一个可用的类
我是图形专家,而不是程序员,所以我不确定这会对您有所帮助。但!
我制作了我所有的 GUI 多帧“电影”,并将每个 gui 线程写在不同的帧上。确保您只有 1-3 个线程,并将 FPS 设置为 30 或 60。
这对于小型项目很有用,因为它的错误抗性和实现是为您完成的。