У меня есть тяжелая функция, которая не подходит для выполнения на основной временной шкале (потому что она занимает много времени, чтобы завершить работу и сбой программы) , поэтому я искал многопоточность в воздухе (as3), но все примеры, которые я нашел, объяснили, как запускать отдельные swf-файлы в рабочих. Как я могу запустить функцию в рабочем (потоке)?adobe air AS3: Как запустить функцию в worker_ Многопоточность (от Workers)
2
A
ответ
2
Официальный рабочий документ (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
}
}
благодарит дорогие Organis, я пользователь из ирана и самана заблокировал наш IP, пожалуйста, вы можете разместить пример для «запуска основного SWF в двух рабочих» –
Done. Вы также можете использовать некоторый прокси-сервер anonymizer онлайн, который позволит решить эту неудобную блокировку для вас. – Organis
@AmirRasti, если вы используете браузер Chrome, попробуйте расширение для него под названием UltraSurf VPN. Также получите AdBlock. Затем вы можете видеть, что любой веб-сайт в мире разблокирован. –