actionscript 中的多线程还是绿色线程?
Posted
技术标签:
【中文标题】actionscript 中的多线程还是绿色线程?【英文标题】:Multithreading or green threading in actionscript? 【发布时间】:2010-09-09 08:56:31 【问题描述】:我想知道是否有任何关于如何在 ActionScript 中实现多线程或“绿色线程”的代码或类库。
您可能已经看到,Scott Peterson 正在开发某种工具集,但除了他在 Adobe MAX Chicago 活动中的表现之外,我没有找到任何其他信息。
问候尼古拉斯
【问题讨论】:
【参考方案1】:这是来自 Drew Cummins 的绿色线程库:
http://blog.generalrelativity.org/?p=29
【讨论】:
【参考方案2】:在 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 在博客条目 - Threads in ActionScript 中实现为一个可用的类
【讨论】:
【参考方案3】:It's an old article,但quasimondo 启动多个 swfs 然后通过 LocalConnection 共享数据的方法也可能很有趣。他们说使用 LocalConnection 的来回可能会消耗几个周期,但如果正在处理的迭代足够复杂,那应该不是太大的问题。
【讨论】:
【参考方案4】:我是图形专家,而不是程序员,所以我不确定这会对您有所帮助。但是!
我将所有的 GUI 制作成多帧“电影”,并将每个 gui 线程写在不同的帧上。确保您只有 1-3 个线程,并将 FPS 设置为 30 或 60。
这对于小型项目很有用,因为它的 bug 抗性和实施已为您完成。
【讨论】:
以上是关于actionscript 中的多线程还是绿色线程?的主要内容,如果未能解决你的问题,请参考以下文章