【问题标题】:Multithreading or green threading in actionscript?actionscript 中的多线程还是绿色线程?
【发布时间】:2010-09-09 08:56:31
【问题描述】:

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

您可能已经看到,Scott Peterson 正在开发某种工具集,但除了他在 Adob​​e MAX Chicago 活动中的表现之外,我没有找到任何其他信息。

问候尼古拉斯

【问题讨论】:

    标签: multithreading actionscript


    【解决方案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 抗性和实施已为您完成。

          【讨论】:

            猜你喜欢
            • 2011-08-08
            • 1970-01-01
            • 1970-01-01
            • 2016-09-14
            • 1970-01-01
            • 1970-01-01
            • 2022-12-01
            • 1970-01-01
            相关资源
            最近更新 更多