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可能会耗费一些周期,但是如果要处理的迭代足够复杂,那么问题不应该太大。