Мне было интересно, есть ли какие-нибудь библиотеки кода или классов о том, как реализовать многопоточность или «зеленые потоки» в ActionScript.
Как вы могли заметить, Скотт Петерсон разрабатывает какой-то набор инструментов, но я не нашел больше информации об этом, кроме его выступления на мероприятии Adobe MAX Chicago.
С уважением, Никлас





В ActionScript нет встроенного способа делать зеленые потоки. Вы должны написать код, чтобы справиться с этим.
Создайте функцию, которая выполняет одну итерацию любой операции, которую вы хотите выполнить. Он должен возвращать истину или ложь в зависимости от того, выполнена его работа или нет. Теперь вам нужно вычислить временной интервал, оставшийся до следующего обновления экрана для события 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 () с должным.
Это было реализовано в удобном классе Алексом Харуи в записи блога - Потоки в ActionScript
Я специалист по графике, а не программист, поэтому не уверен, что это вам поможет. НО!
Я делаю все свои графические интерфейсы многокадровыми «фильмами» и пишу каждый поток графического интерфейса в отдельном кадре. Убедитесь, что у вас есть только 1-3 потока, и установите FPS на 30 или 60.
Это полезно для небольших проектов, потому что оно устойчиво к ошибкам и реализовано за вас.
Вот библиотека Green Threading от Дрю Камминса:
Это старая статья, но метод квазимондо запуска нескольких swf-файлов и последующего обмена данными через LocalConnection также может представлять интерес. Они говорили, что использование LocalConnection может занять несколько циклов, но если обрабатываемые итерации достаточно сложны, это не должно быть большой проблемой.