gpt4 book ai didi

multithreading - Adobe Air AS3 :How to run a function in workers_ Multithreading (by Workers)

转载 作者:行者123 更新时间:2023-12-03 12:59:35 28 4
gpt4 key购买 nike

我有一个繁重的功能,不适合在主时间轴上执行(因为要花很长时间才能完成并使程序崩溃)。
因此我在air(as3)中搜索多线程,但是我发现的所有示例都说明了如何在worker中运行单独的swf文件。如何在worker(thread)中运行函数?

最佳答案

正式工作人员文档(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Worker.html):每个其他工作人员都是通过单独的swf创建的。

因此,您要么将沉重的代码安排为附加的SWF,要么对其进行重构,以便可以暂停和恢复该代码并将其执行分散到多个帧(ENTER_FRAME事件,而不是时间轴帧,ofc)中。

P.S.在同一文档页面上,有一种方法可以在两个工作程序中运行主SWF,因此您可以将其分入控制应用程序和工作程序应用程序中。

 // The primordial worker's main class constructor
public function PrimordialWorkerClass()
{
init();
}

private function init():void
{
var swfBytes:ByteArray = this.loaderInfo.bytes;

// Check to see if this is the primordial worker
if (Worker.current.isPrimordial)
{
// create a background worker
var bgWorker:Worker = WorkerDomain.current.createWorker(swfBytes);

// listen for worker state changes to know when the worker is running
bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler);

// set up communication between workers using
// setSharedProperty(), createMessageChannel(), etc.
// ... (not shown)

bgWorker.start();
}
else // entry point for the background worker
{
// set up communication between workers using getSharedProperty()
// ... (not shown)

// start the background work
}
}

关于multithreading - Adobe Air AS3 :How to run a function in workers_ Multithreading (by Workers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41906999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com