ActionScript中的多线程还是绿色线程?

时间:2020-03-05 18:55:21  来源:igfitidea点击:

我想知道是否有任何代码或者类库有关如何在ActionScript中实现多线程或者"绿色线程"。

我们可能已经看到,Scott Peterson正在开发某种工具集,但是除了他在Adobe MAX Chicago活动中的表现之外,我没有找到更多关于此的信息。

问候尼古拉斯

解决方案

回答

在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()与due比较来检查是否已经超过了到期时间。

Alex Harui已在博客条目" ActionScript中的线程"中将其实现为可用类。

回答

我是图形人员,不是程序员,所以我不确定这对我们有帮助。但!

我将所有GUI制作成多帧"电影",并将每个GUI线程写在不同的帧上。确保只有1-3个线程,并将FPS设置为30或者60。

这对于小型项目很有用,因为它的抗虫性和实现已为我们完成。

回答

这是Drew Cummins的Green Threading库:

http://blog.generalrelativity.org/?p=29

回答

这是一篇老文章,但是quasimondo启动多个swf然后通过LocalConnection共享数据的方法也可能引起人们的兴趣。他们说来回使用LocalConnection可能会耗费一些周期,但是如果要处理的迭代足够复杂,那么问题不应该太大。