Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flash.system 

WorkerDomain  - AS3

Пакетflash.system
Классpublic final class WorkerDomain
НаследованиеWorkerDomain Inheritance Object

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.4, AIR 3.4

Класс WorkerDomain предоставляет возможность создания объектов Worker и доступа к ним. WorkerDomain представляет собой механизм среды выполнения для управления множеством экземпляров Worker в пределах домена безопасности.

Примечание. Использование объектов worker для параллельного выполнения поддерживается во Flash Player и в AIR на настольных платформах. Для мобильных платформ параллельное выполнение поддерживается в AIR для Android, но не в AIR для iOS. Прежде чем использовать многозадачность, вы можете проверить наличие поддержки многозадачности с помощью статического свойства isSupported.

Экземпляры WorkerDomain нельзя создавать напрямую путем вызова конструктора WorkerDomain(). Для каждого приложения существует один экземпляр WorkerDomain. В контекстах, поддерживающих использование объектов Worker для параллельного выполнения задач, среда выполнения автоматически создает объект WorkerDomain при запуске. Доступ к этому экземпляру осуществляется посредством статического свойства current.

Для создания нового экземпляра класса Worker, используйте метод createWorker(). Для доступа к набору объектов Worker, выполняющихся в данный момент используйте метод listWorkers().

Связанные элементы API



Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  current : WorkerDomain
[статические] [только для чтения] Экземпляр WorkerDomain, в котором в настоящий момент выполняется код.
WorkerDomain
  isSupported : Boolean
[статические] [только для чтения] Указывает, поддерживает ли текущий контекст выполнения объекты WorkerDomain и Worker для организации параллельного выполнения кода.
WorkerDomain
Общедоступные методы
 МетодОпределено
  
createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker
Создает новый экземпляр Worker из байтовых данных или swf-файла.
WorkerDomain
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
  
Предоставляет доступ к набору текущих выполняющихся объектов Worker в домене WorkerDomain (т. е. таких объектов Worker, у которых свойство state имеет значение WorkerState.RUNNING).
WorkerDomain
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве

current

свойство
current:WorkerDomain  [только для чтения]

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.4, AIR 3.4

Экземпляр WorkerDomain, в котором в настоящий момент выполняется код. Это единственный экземпляр WorkerDomain в приложении.



Реализация
    public static function get current():WorkerDomain

isSupported

свойство 
isSupported:Boolean  [только для чтения]

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.4, AIR 3.4

Указывает, поддерживает ли текущий контекст выполнения объекты WorkerDomain и Worker для организации параллельного выполнения кода.

Если параллельное выполнение доступно, это свойство имеет значение true.



Реализация
    public static function get isSupported():Boolean
Сведения о методе

createWorker

()метод
public function createWorker(swf:ByteArray, giveAppPrivileges:Boolean = false):Worker

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.4, AIR 3.4

Создает новый экземпляр Worker из байтового содержимого swf.

Каждый объект worker создается из изолированного приложения SWF и выполняется как изолированное приложение SWF. Для создания экземпляра Worker необходимо получить байтовое содержимое SWF-файла в виде экземпляра ByteArray и передать его в данный метод. Существует три способа получить доступ к байтовому содержимому SWF-файла для этой цели:

  • Использовать метатег [Embed] для внедрения SWF-файла в приложение в виде байтового массива (ByteArray):

        // Embed the SWF file
        [Embed(source="../swfs/BgWorker.swf", mimeType="application/octet-stream")]
        private static var BgWorker_ByteClass:Class;
        
        private function createWorker():void
        {
          // create the background worker
          var workerBytes:ByteArray = new BgWorker_ByteClass();
          var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes);
          
          // 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();
        }
  • Загрузить внешний SWF-файл с помощью загрузчика URLLoader:

        // load the SWF file
        var workerLoader:URLLoader = new URLLoader();
        workerLoader.dataFormat = URLLoaderDataFormat.BINARY;
        workerLoader.addEventListener(Event.COMPLETE, loadComplete);
        workerLoader.load(new URLRequest("BgWorker.swf"));
        
        private function loadComplete(event:Event):void
        {
          // create the background worker
          var workerBytes:ByteArray = event.target.data as ByteArray;
          var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes);
          
          // 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();
        }
  • Использовать один SWF-файл и как первоначальный, и как фоновый объект worker:

        // 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
          }

Создание объекта Worker с помощью метода createWorker() не инициирует его выполнение. Чтобы запустить код объекта Worker на выполнение, вызовите метод start() этого объекта Worker.

Полезный эффект объектов Worker состоит в том, что они снижают вероятность пропуска кадров вследствие блокирования основного потока отрисовки другим кодом. Тем не менее, для объектов Worker требуется дополнительная системная память и ресурсы центрального процессора, что может влиять на итоговую производительность. Поскольку каждый объект Worker использует отдельный экземпляр виртуальной среды исполнения, накладные расходы могут быть велики даже для элементарных объектов worker. При использовании объектов Worker проверяйте работу кода на всех целевых платформах, чтобы убедиться, что нагрузка на систему является приемлемой. Adobe рекомендует не использовать в типовых сценариях более одного или двух фоновых объектов Worker.

Параметры

swf:ByteArray — Объект ByteArray, содержащий байты действительного SWF-файла
 
giveAppPrivileges:Boolean (default = false) — указывает, следует ли предоставить объекту worker права «песочницы» в AIR. Этот параметр игнорируется во Flash Player

Возвращает
Worker — вновь созданный объект Worker, если создание завершилось успешно. Возвращаемое значение null указывает на то, что объект worker не был создан из-за того, что текущий контекст не поддерживает параллельное выполнение, или из-за того, что достигнут предел возможностей платформы.

Выдает
SecurityError — swf-файл, байтовое содержимое которого передается в параметре swf, принадлежит другому домену безопасности, чем swf, в котором вызывается данный метод

listWorkers

()метод 
public function listWorkers():Vector.<Worker>

Язык версии: ActionScript 3.0
Версии среды выполнения: Flash Player 11.4, AIR 3.4

Предоставляет доступ к набору текущих выполняющихся объектов Worker в домене WorkerDomain (т. е. таких объектов Worker, у которых свойство state имеет значение WorkerState.RUNNING).

Возвращает
Vector.<Worker> — Вектор (Vector), содержащий экземпляры Worker, выполняющиеся в данный момент.




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.