Adobe® Flash® Platform için ActionScript® 3.0 Başvurusu
Ana Sayfa  |  Paket ve Sınıf Listesini Gizle |  Paketler  |  Sınıflar  |  Yenilikler  |  Dizin  |  Ekler  |  Niçin İngilizce?
Filtreler: AIR 30.0 ve öncesi, Flash Player 30.0 ve öncesi, Flash Lite 4
Flex 4.6 ve öncesi, Flash Pro CS6 ve öncesi
Filtreleri Gizle
flash.system 

Worker  - AS3

Paketlerx

Üst Düzey
adobe.utils
air.desktop
air.net
air.update
air.update.events
coldfusion.air
coldfusion.air.errors
coldfusion.air.events
coldfusion.service
coldfusion.service.events
coldfusion.service.mxml
com.adobe.acm.solutions.authoring.domain.extensions
com.adobe.acm.solutions.ccr.domain.extensions
com.adobe.consulting.pst.vo
com.adobe.dct.component
com.adobe.dct.component.datadictionary
com.adobe.dct.component.datadictionaryElement
com.adobe.dct.component.dataElementsPanel
com.adobe.dct.component.toolbars
com.adobe.dct.event
com.adobe.dct.exp
com.adobe.dct.model
com.adobe.dct.service
com.adobe.dct.service.provider
com.adobe.dct.transfer
com.adobe.dct.util
com.adobe.dct.view
com.adobe.ep.taskmanagement.domain
com.adobe.ep.taskmanagement.event
com.adobe.ep.taskmanagement.filter
com.adobe.ep.taskmanagement.services
com.adobe.ep.taskmanagement.util
com.adobe.ep.ux.attachmentlist.component
com.adobe.ep.ux.attachmentlist.domain
com.adobe.ep.ux.attachmentlist.domain.events
com.adobe.ep.ux.attachmentlist.domain.renderers
com.adobe.ep.ux.attachmentlist.skin
com.adobe.ep.ux.attachmentlist.skin.renderers
com.adobe.ep.ux.content.event
com.adobe.ep.ux.content.factory
com.adobe.ep.ux.content.handlers
com.adobe.ep.ux.content.managers
com.adobe.ep.ux.content.model.asset
com.adobe.ep.ux.content.model.preview
com.adobe.ep.ux.content.model.relation
com.adobe.ep.ux.content.model.search
com.adobe.ep.ux.content.model.toolbar
com.adobe.ep.ux.content.search
com.adobe.ep.ux.content.services
com.adobe.ep.ux.content.services.load
com.adobe.ep.ux.content.services.permissions
com.adobe.ep.ux.content.services.preview
com.adobe.ep.ux.content.services.providers
com.adobe.ep.ux.content.services.query
com.adobe.ep.ux.content.services.relationships
com.adobe.ep.ux.content.services.search.lccontent
com.adobe.ep.ux.content.services.version
com.adobe.ep.ux.content.view
com.adobe.ep.ux.content.view.components.activate
com.adobe.ep.ux.content.view.components.grid
com.adobe.ep.ux.content.view.components.grid.hover
com.adobe.ep.ux.content.view.components.grid.hover.component
com.adobe.ep.ux.content.view.components.grid.renderers
com.adobe.ep.ux.content.view.components.relationships
com.adobe.ep.ux.content.view.components.review
com.adobe.ep.ux.content.view.components.search.renderers
com.adobe.ep.ux.content.view.components.searchpod
com.adobe.ep.ux.content.view.components.toolbar
com.adobe.ep.ux.content.view.components.toolbar.controlRenderers
com.adobe.ep.ux.content.view.components.version
com.adobe.ep.ux.documentsubmit.component
com.adobe.ep.ux.documentsubmit.domain
com.adobe.ep.ux.documentsubmit.skin
com.adobe.ep.ux.taskaction.component
com.adobe.ep.ux.taskaction.domain
com.adobe.ep.ux.taskaction.domain.events
com.adobe.ep.ux.taskaction.skin
com.adobe.ep.ux.taskdetails.component
com.adobe.ep.ux.taskdetails.domain
com.adobe.ep.ux.taskdetails.skin
com.adobe.ep.ux.tasklist.component
com.adobe.ep.ux.tasklist.domain
com.adobe.ep.ux.tasklist.skin
com.adobe.ep.ux.webdocumentviewer.domain
com.adobe.exm.expression
com.adobe.exm.expression.error
com.adobe.exm.expression.event
com.adobe.exm.expression.impl
com.adobe.fiber.runtime.lib
com.adobe.fiber.services
com.adobe.fiber.services.wrapper
com.adobe.fiber.styles
com.adobe.fiber.util
com.adobe.fiber.valueobjects
com.adobe.gravity.binding
com.adobe.gravity.context
com.adobe.gravity.flex.bundleloader
com.adobe.gravity.flex.progress
com.adobe.gravity.flex.serviceloader
com.adobe.gravity.framework
com.adobe.gravity.init
com.adobe.gravity.service.bundleloader
com.adobe.gravity.service.logging
com.adobe.gravity.service.manifest
com.adobe.gravity.service.progress
com.adobe.gravity.tracker
com.adobe.gravity.ui
com.adobe.gravity.utility
com.adobe.gravity.utility.async
com.adobe.gravity.utility.error
com.adobe.gravity.utility.events
com.adobe.gravity.utility.factory
com.adobe.gravity.utility.flex.async
com.adobe.gravity.utility.logging
com.adobe.gravity.utility.message
com.adobe.gravity.utility.sequence
com.adobe.gravity.utility.url
com.adobe.guides.control
com.adobe.guides.domain
com.adobe.guides.i18n
com.adobe.guides.spark.components.skins
com.adobe.guides.spark.components.skins.mx
com.adobe.guides.spark.headers.components
com.adobe.guides.spark.headers.skins
com.adobe.guides.spark.layouts.components
com.adobe.guides.spark.layouts.skins
com.adobe.guides.spark.navigators.components
com.adobe.guides.spark.navigators.renderers
com.adobe.guides.spark.navigators.skins
com.adobe.guides.spark.util
com.adobe.guides.spark.wrappers.components
com.adobe.guides.spark.wrappers.skins
com.adobe.guides.submit
com.adobe.icc.dc.domain
com.adobe.icc.dc.domain.factory
com.adobe.icc.editors.events
com.adobe.icc.editors.handlers
com.adobe.icc.editors.managers
com.adobe.icc.editors.model
com.adobe.icc.editors.model.config
com.adobe.icc.editors.model.el
com.adobe.icc.editors.model.el.operands
com.adobe.icc.editors.model.el.operators
com.adobe.icc.enum
com.adobe.icc.external.dc
com.adobe.icc.obj
com.adobe.icc.services
com.adobe.icc.services.category
com.adobe.icc.services.config
com.adobe.icc.services.download
com.adobe.icc.services.export
com.adobe.icc.services.external
com.adobe.icc.services.formbridge
com.adobe.icc.services.fragmentlayout
com.adobe.icc.services.layout
com.adobe.icc.services.letter
com.adobe.icc.services.locator
com.adobe.icc.services.module
com.adobe.icc.services.render
com.adobe.icc.services.submit
com.adobe.icc.services.user
com.adobe.icc.token
com.adobe.icc.vo
com.adobe.icc.vo.render
com.adobe.icomm.assetplacement.controller
com.adobe.icomm.assetplacement.controller.utils
com.adobe.icomm.assetplacement.data
com.adobe.icomm.assetplacement.model
com.adobe.livecycle.assetmanager.client
com.adobe.livecycle.assetmanager.client.event
com.adobe.livecycle.assetmanager.client.handler
com.adobe.livecycle.assetmanager.client.managers
com.adobe.livecycle.assetmanager.client.model
com.adobe.livecycle.assetmanager.client.model.cms
com.adobe.livecycle.assetmanager.client.service
com.adobe.livecycle.assetmanager.client.service.search
com.adobe.livecycle.assetmanager.client.service.search.cms
com.adobe.livecycle.assetmanager.client.utils
com.adobe.livecycle.content
com.adobe.livecycle.rca.model
com.adobe.livecycle.rca.model.constant
com.adobe.livecycle.rca.model.document
com.adobe.livecycle.rca.model.participant
com.adobe.livecycle.rca.model.reminder
com.adobe.livecycle.rca.model.stage
com.adobe.livecycle.rca.service
com.adobe.livecycle.rca.service.core
com.adobe.livecycle.rca.service.core.delegate
com.adobe.livecycle.rca.service.process
com.adobe.livecycle.rca.service.process.delegate
com.adobe.livecycle.rca.token
com.adobe.livecycle.ria.security.api
com.adobe.livecycle.ria.security.service
com.adobe.mosaic.layouts
com.adobe.mosaic.layouts.dragAndDrop
com.adobe.mosaic.layouts.interfaces
com.adobe.mosaic.mxml
com.adobe.mosaic.om.constants
com.adobe.mosaic.om.events
com.adobe.mosaic.om.impl
com.adobe.mosaic.om.interfaces
com.adobe.mosaic.skinning
com.adobe.mosaic.sparklib.editors
com.adobe.mosaic.sparklib.optionMenu
com.adobe.mosaic.sparklib.scrollableMenu
com.adobe.mosaic.sparklib.scrollableMenu.skins
com.adobe.mosaic.sparklib.tabLayout
com.adobe.mosaic.sparklib.tabLayout.events
com.adobe.mosaic.sparklib.tabLayout.layouts
com.adobe.mosaic.sparklib.tabLayout.skins
com.adobe.mosaic.sparklib.text
com.adobe.mosaic.sparklib.util
com.adobe.solutions.acm.authoring.presentation
com.adobe.solutions.acm.authoring.presentation.actionbar
com.adobe.solutions.acm.authoring.presentation.common
com.adobe.solutions.acm.authoring.presentation.events
com.adobe.solutions.acm.authoring.presentation.fragment
com.adobe.solutions.acm.authoring.presentation.letter
com.adobe.solutions.acm.authoring.presentation.letter.data
com.adobe.solutions.acm.authoring.presentation.preview
com.adobe.solutions.acm.authoring.presentation.rte
com.adobe.solutions.acm.ccr.presentation
com.adobe.solutions.acm.ccr.presentation.contentcapture
com.adobe.solutions.acm.ccr.presentation.contentcapture.events
com.adobe.solutions.acm.ccr.presentation.contentcapture.preview
com.adobe.solutions.acm.ccr.presentation.datacapture
com.adobe.solutions.acm.ccr.presentation.datacapture.renderers
com.adobe.solutions.acm.ccr.presentation.pdf
com.adobe.solutions.exm
com.adobe.solutions.exm.authoring
com.adobe.solutions.exm.authoring.components.controls
com.adobe.solutions.exm.authoring.components.toolbars
com.adobe.solutions.exm.authoring.domain
com.adobe.solutions.exm.authoring.domain.expression
com.adobe.solutions.exm.authoring.domain.impl
com.adobe.solutions.exm.authoring.domain.method
com.adobe.solutions.exm.authoring.domain.variable
com.adobe.solutions.exm.authoring.enum
com.adobe.solutions.exm.authoring.events
com.adobe.solutions.exm.authoring.model
com.adobe.solutions.exm.authoring.renderer
com.adobe.solutions.exm.authoring.view
com.adobe.solutions.exm.expression
com.adobe.solutions.exm.impl
com.adobe.solutions.exm.impl.method
com.adobe.solutions.exm.method
com.adobe.solutions.exm.mock
com.adobe.solutions.exm.mock.method
com.adobe.solutions.exm.runtime
com.adobe.solutions.exm.runtime.impl
com.adobe.solutions.exm.variable
com.adobe.solutions.prm.constant
com.adobe.solutions.prm.domain
com.adobe.solutions.prm.domain.factory
com.adobe.solutions.prm.domain.impl
com.adobe.solutions.prm.domain.manager
com.adobe.solutions.prm.presentation.asset
com.adobe.solutions.prm.presentation.constant
com.adobe.solutions.prm.presentation.document
com.adobe.solutions.prm.presentation.event
com.adobe.solutions.prm.presentation.file
com.adobe.solutions.prm.presentation.project
com.adobe.solutions.prm.presentation.team
com.adobe.solutions.prm.presentation.util
com.adobe.solutions.prm.service
com.adobe.solutions.prm.services.impl
com.adobe.solutions.prm.vo
com.adobe.solutions.rca.constant
com.adobe.solutions.rca.domain
com.adobe.solutions.rca.domain.common
com.adobe.solutions.rca.domain.factory
com.adobe.solutions.rca.domain.impl
com.adobe.solutions.rca.domain.impl.manager
com.adobe.solutions.rca.domain.manager
com.adobe.solutions.rca.presentation
com.adobe.solutions.rca.presentation.comment
com.adobe.solutions.rca.presentation.constant
com.adobe.solutions.rca.presentation.event
com.adobe.solutions.rca.presentation.gantt
com.adobe.solutions.rca.presentation.gantt.ruler
com.adobe.solutions.rca.presentation.template
com.adobe.solutions.rca.presentation.template.audit
com.adobe.solutions.rca.presentation.template.definition
com.adobe.solutions.rca.presentation.template.documents
com.adobe.solutions.rca.presentation.template.stages
com.adobe.solutions.rca.presentation.util
com.adobe.solutions.rca.service
com.adobe.solutions.rca.services.impl
com.adobe.solutions.rca.vo
com.adobe.solutions.rca.vo.um
com.adobe.viewsource
fl.accessibility
fl.containers
fl.controls
fl.controls.dataGridClasses
fl.controls.listClasses
fl.controls.progressBarClasses
fl.core
fl.data
fl.display
fl.events
fl.ik
fl.lang
fl.livepreview
fl.managers
fl.motion
fl.motion.easing
fl.rsl
fl.text
fl.transitions
fl.transitions.easing
fl.video
flash.accessibility
flash.concurrent
flash.crypto
flash.data
flash.desktop
flash.display
flash.display3D
flash.display3D.textures
flash.errors
flash.events
flash.external
flash.filesystem
flash.filters
flash.geom
flash.globalization
flash.html
flash.media
flash.net
flash.net.dns
flash.net.drm
flash.notifications
flash.permissions
flash.printing
flash.profiler
flash.sampler
flash.security
flash.sensors
flash.system
flash.text
flash.text.engine
flash.text.ime
flash.ui
flash.utils
flash.xml
flashx.textLayout
flashx.textLayout.compose
flashx.textLayout.container
flashx.textLayout.conversion
flashx.textLayout.edit
flashx.textLayout.elements
flashx.textLayout.events
flashx.textLayout.factory
flashx.textLayout.formats
flashx.textLayout.operations
flashx.textLayout.utils
flashx.undo
ga.controls
ga.layouts
ga.model
ga.uiComponents
ga.util
ga.views
ga.wrappers
lc.foundation
lc.foundation.domain
lc.foundation.events
lc.foundation.ui
lc.foundation.util
lc.preloader
lc.procmgmt
lc.procmgmt.commands
lc.procmgmt.domain
lc.procmgmt.events
lc.procmgmt.formbridge
lc.procmgmt.impl
lc.procmgmt.ui.attachments
lc.procmgmt.ui.controls
lc.procmgmt.ui.controls.card
lc.procmgmt.ui.controls.renderer
lc.procmgmt.ui.help
lc.procmgmt.ui.layout
lc.procmgmt.ui.presentationmodel
lc.procmgmt.ui.process
lc.procmgmt.ui.search
lc.procmgmt.ui.startpoint
lc.procmgmt.ui.task
lc.procmgmt.ui.task.form
lc.procmgmt.ui.task.form.commands
lc.procmgmt.ui.tracking
mx.accessibility
mx.automation
mx.automation.air
mx.automation.delegates
mx.automation.delegates.advancedDataGrid
mx.automation.delegates.charts
mx.automation.delegates.containers
mx.automation.delegates.controls
mx.automation.delegates.controls.dataGridClasses
mx.automation.delegates.controls.fileSystemClasses
mx.automation.delegates.core
mx.automation.delegates.flashflexkit
mx.automation.events
mx.binding
mx.binding.utils
mx.charts
mx.charts.chartClasses
mx.charts.effects
mx.charts.effects.effectClasses
mx.charts.events
mx.charts.renderers
mx.charts.series
mx.charts.series.items
mx.charts.series.renderData
mx.charts.styles
mx.collections
mx.collections.errors
mx.containers
mx.containers.accordionClasses
mx.containers.dividedBoxClasses
mx.containers.errors
mx.containers.utilityClasses
mx.controls
mx.controls.advancedDataGridClasses
mx.controls.dataGridClasses
mx.controls.listClasses
mx.controls.menuClasses
mx.controls.olapDataGridClasses
mx.controls.scrollClasses
mx.controls.sliderClasses
mx.controls.textClasses
mx.controls.treeClasses
mx.controls.videoClasses
mx.core
mx.core.windowClasses
mx.data
mx.data.crypto
mx.data.errors
mx.data.events
mx.data.messages
mx.data.mxml
mx.data.offline.errors
mx.data.utils
mx.effects
mx.effects.easing
mx.effects.effectClasses
mx.events
mx.filters
mx.flash
mx.formatters
mx.geom
mx.graphics
mx.graphics.codec
mx.graphics.shaderClasses
mx.logging
mx.logging.errors
mx.logging.targets
mx.managers
mx.messaging
mx.messaging.channels
mx.messaging.config
mx.messaging.errors
mx.messaging.events
mx.messaging.management
mx.messaging.messages
mx.modules
mx.netmon
mx.olap
mx.olap.aggregators
mx.preloaders
mx.printing
mx.resources
mx.rpc
mx.rpc.events
mx.rpc.http
mx.rpc.http.mxml
mx.rpc.livecycle
mx.rpc.mxml
mx.rpc.remoting
mx.rpc.remoting.mxml
mx.rpc.soap
mx.rpc.soap.mxml
mx.rpc.wsdl
mx.rpc.xml
mx.skins
mx.skins.halo
mx.skins.spark
mx.skins.wireframe
mx.skins.wireframe.windowChrome
mx.states
mx.styles
mx.utils
mx.validators
org.osmf.containers
org.osmf.display
org.osmf.elements
org.osmf.events
org.osmf.layout
org.osmf.logging
org.osmf.media
org.osmf.metadata
org.osmf.net
org.osmf.net.dvr
org.osmf.net.httpstreaming
org.osmf.net.metrics
org.osmf.net.qos
org.osmf.net.rtmpstreaming
org.osmf.net.rules
org.osmf.traits
org.osmf.utils
spark.accessibility
spark.automation.delegates
spark.automation.delegates.components
spark.automation.delegates.components.gridClasses
spark.automation.delegates.components.mediaClasses
spark.automation.delegates.components.supportClasses
spark.automation.delegates.skins.spark
spark.automation.events
spark.collections
spark.components
spark.components.calendarClasses
spark.components.gridClasses
spark.components.mediaClasses
spark.components.supportClasses
spark.components.windowClasses
spark.core
spark.effects
spark.effects.animation
spark.effects.easing
spark.effects.interpolation
spark.effects.supportClasses
spark.events
spark.filters
spark.formatters
spark.formatters.supportClasses
spark.globalization
spark.globalization.supportClasses
spark.layouts
spark.layouts.supportClasses
spark.managers
spark.modules
spark.preloaders
spark.primitives
spark.primitives.supportClasses
spark.skins
spark.skins.mobile
spark.skins.mobile.supportClasses
spark.skins.spark
spark.skins.spark.mediaClasses.fullScreen
spark.skins.spark.mediaClasses.normal
spark.skins.spark.windowChrome
spark.skins.wireframe
spark.skins.wireframe.mediaClasses
spark.skins.wireframe.mediaClasses.fullScreen
spark.transitions
spark.utils
spark.validators
spark.validators.supportClasses
xd.core.axm.enterprise.view.components
xd.core.axm.enterprise.view.skins
xd.core.axm.view.components
xd.core.axm.view.components.support

Dil Öğeleri

Global Sabitler
Global İşlevler
Operatörler
İfadeler, Anahtar Kelimeler ve Direktifler
Özel Türler

Ekler

Yenilikler
Derleyici Hataları
Derleyici Uyarıları
Çalışma Zamanı Hataları
ActionScript 3'e Geçiş Yapma
Desteklenen Karakter Kümeleri
Yalnızca MXML Etiketleri
Motion XML Öğeleri
Timed Text Etiketleri
Onaylanmamış öğelerin listesi
Erişilebilirlik Uygulaması Sabitleri
ActionScript Örnekleri Nasıl Kullanılır?
Yasal uyarılar
Paketflash.system
Sınıfpublic final class Worker
Miras AlmaWorker Inheritance EventDispatcher Inheritance Object

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Worker nesnesi, Flash çalışma zamanının sanal örneği olan bir worker (işçi) öğesini temsil eder. Her Worker örneği, tek bir worker (işçi) öğesinin paylaşılan verilerine ve yaşam döngüsüne erişimi kontrol eder ve sağlar.

Worker (işçi), başka bir worker (işçi) öğesinde (ana swf'nin worker (işçi) öğesi de dahil) diğer işlemler çalışırken aynı anda "arka planda" kod yürütmenize olanak sağlar. Worker (işçi) dışı bağlamda bazı işlemlerin (örneğin, bir döngüde büyük bir veri kümesinin işlenmesi) yürütülmesi uzun sürdüğünden, ana uygulama iş parçacığının ekranı yeterince hızlı güncellemesi önlenir. Bu, ekranın titremesine veya donmasına neden olabilir.

Worker (işçi) kullanmanız, uzun süre çalışan veya yavaş bir işlemi arka planda gerçekleştirmenize olanak sağlar. Her worker (işçi), kendi kodunu diğer worker (işçi) öğelerinden ayrı bir yürütme iş parçacığında çalıştırır. Bir worker (işçi) öğesindeki uzun süre çalışan kod, başka bir worker (işçi) öğesindeki kodun yürütmesini önlemez. Bunun yerine, iki kod kümesi paralel olarak çalışır. Sonuç olarak ana uygulama iş parçacığı ekranı güncellemeye devam ederken, arka planda kod yürütmek için bir worker (işçi) kullanılabilir.

Aynı anda birden çok kod kümesini yürütme yeteneği, eşzamanlılık olarak bilinir.

Not: Eşzamanlılık için worker (işçi) öğelerinin kullanılması masaüstü platformlarda hem Flash Player'da hem de AIR'de desteklenir. Mobil platformlarda eşzamanlılık hem Android hem de iOS üzerindeki AIR'de desteklenir. Kullanmayı denemeden önce eşzamanlılığın desteklenip desteklenmediğini kontrol etmek için, statik isSupported özelliğini kullanabilirsiniz.

Worker() yapıcısını çağırarak doğrudan Worker örnekleri oluşturmazsınız. Eşzamanlılık için worker (işçi) öğelerinin kullanımının desteklendiği bağlamlarda, başlangıçta çalışma zamanı, ilkel worker olarak bilinen, ana SWF ile ilişkili Worker (İşçi) öğesini otomatik olarak oluşturur.

Her ek worker (işçi), ayrı bir swf'den oluşturulur. Yeni bir Worker sınıfı örneği oluşturmak için, arka plan worker (işçi) öğesinin swf baytlarını içeren bir ByteArray öğesini WorkerDomain sınıfının createWorker() yöntemine argüman olarak iletin. Bu amaçla bir swf'nin baytlarına erişmenin üç yaygın yolu vardır:

  • .swf dosyasını bir ByteArray olarak uygulamaya gömmek için [Embed] meta etiketini kullanın:

     // 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();
     }
  • Bir URLLoader kullanarak harici bir SWF dosyası yükleyin:

     // 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();
     }
  • İlkel worker (işçi) ve arka plan worker (işçi) olarak tek bir swf kullanın:

     // 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 (işçi) öğeleri birbirinden ayrı yürütülür ve aynı belleğe, değişkenlere ve koda erişim elde etmez. Ancak Worker (işçi) örnekleri arasında mesaj ve verileri iletmek için kullanılabilir üç mekanizma vardır:

  • Paylaşılan özellikler: Her worker (işçi), kendisinden ve diğer worker (işçi) öğelerinden ayarlanabilen ve okunabilen dahili bir adlandırılmış değerler kümesine sahiptir. setSharedProperty() yöntemini kullanarak bir değer ayarlayabilir ve getSharedProperty() yöntemini kullanarak bir değer okuyabilirsiniz.
  • MessageChannel: Bir MessageChannel nesnesi, bir worker (işçi) öğesinden diğerine tek yönlü mesajlar ve veriler göndermenize olanak sağlar. Alıcı worker (işçi) öğesindeki kod, bir mesaj geldiğinde bildirim almak için bir olayı dinleyebilir. MessageChannel nesnesi oluşturmak için createMessageChannel() yöntemini kullanın.
  • Paylaşılabilir ByteArray: Bir ByteArray nesnesinin shareable özelliği true ise, temel belleğin aynısı söz konusu ByteArray örnekleri için tüm worker (işçi) öğelerinde kullanılır. Birden fazla worker (işçi) öğesindeki kod paylaşılan belleğe aynı anda erişebildiğinden, kodunuzun, beklenmeyen veri değişiklikleri sonucu oluşan sorunları önleme amacıyla ByteArray.shareable özelliği açıklamasında belirtilen mekanizmaları kullanması gerekir.

Birçok çalışma zamanı API'si, arka plan worker (işçi) öğesinde çalışan kodda kullanılamaz. Bu öncelikle, kullanıcı girdi ve çıktı mekanizmalarıyla ilgili API'lerden veya pencereler ve sürükleme gibi işletim sistemi öğelerinden oluşur. Kural olarak, tüm bağlamlarda desteklenmeyen herhangi bir API için isSupported, available ve benzeri özellikleri kullanarak, API'yi kullanmaya çalışmadan önce arka plan worker (işçi) bağlamında API'nin kullanılabilir olup olmadığını kontrol edin.

Not: Arka plan ve ikincil işçiler için Yerel Uzantılar desteklenmez.

Worker nesneleri, ana görüntü oluşturma iş parçacığının diğer kod tarafından engellenmesi nedeniyle kare hızı düşüş olasılığını azalttığı için kullanışlıdır. Ancak worker nesneleri ek sistem belleği ve CPU kullanımı gerektirir ve bu da genel uygulama performansı açısından maliyetli olabilir. Her worker (işçi) kendi çalışma zamanı sanal makine örneğini kullandığından, ufak bir worker (işçi) öğesinin bile ek yükü büyük olabilir. Worker (işçi) öğelerini kullanırken, sistemdeki taleplerin çok büyük olmadığından emin olmak için tüm hedef platformlarınızda kodunuzu test edin. Adobe, tipik bir senaryoda bir veya ikiden fazla arka plan worker (işçi) kullanmamanızı önerir.

Örnekleri görüntüle

Daha fazla bilgi

İlgili API Öğeleri



Genel Özellikler
 ÖzellikTanımlayan:
 Inheritedconstructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru.
Object
  current : Worker
[statik] [salt okunur] Geçerli kodu içeren worker (işçi) öğesine erişim sağlar
Worker
  isPrimordial : Boolean
[salt okunur] Bu worker (işçi) öğesinin ilkel bir worker (işçi) olup olmadığını belirtir.
Worker
  isSupported : Boolean
[statik] [salt okunur] Geçerli çalışma zamanı bağlamının eşzamanlı kod yürütme için Worker nesnelerinin kullanımını destekleyip desteklemediğini belirtir.
Worker
  state : String
[salt okunur] Worker (işçi) öğesinin yaşam döngüsündeki geçerli durumu.
Worker
Genel Yöntemler
 YöntemTanımlayan:
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
[geçersiz kıl] EventDispatcher nesnesi olan bir olay dinleyici nesnesini, dinleyicinin bir olayın bildirimini alması için kaydeder.
Worker
  
Yöntemin başka bir alıcı worker (işçi) öğesine çağrıldığı worker (işçi) öğesinden mesaj göndermek için yeni bir MessageChannel örneği oluşturur.
Worker
 Inherited
Olay akışına bir olay gönderir.
EventDispatcher
  
Adlandırılmış bir anahtar ile bu worker (işçi) öğesinde saklanan bir değeri alır.
Worker
 Inherited
EventDispatcher nesnesinin belirli bir olay türü için kayıtlı dinleyicisi olup olmadığını kontrol eder.
EventDispatcher
 Inherited
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir.
Object
 Inherited
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir.
Object
 Inherited
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir.
Object
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
[geçersiz kıl] EventDispatcher nesnesinden bir dinleyiciyi kaldırır.
Worker
 Inherited
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar.
Object
  
Worker (işçi) öğesinin swf dosyasında çalışan kod için kullanılabilir olan adlandırılmış bir değer sağlar.
Worker
  
Worker (işçi) öğesinin yürütülmesini başlatır.
Worker
  
Bu worker (işçi) öğesinin kodunun yürütmesini durdurur.
Worker
 Inherited
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür.
Object
 Inherited
Belirtilen nesnenin dize olarak temsil edilen halini döndürür.
Object
 Inherited
Belirtilen nesnenin temel değerini döndürür.
Object
 Inherited
Bir olay dinleyicisinin bu EventDispatcher nesnesiyle mi, yoksa onun belirtilen olay türüne yönelik üst öğelerinden biriyle mi kayıtlı olduğunu kontrol eder.
EventDispatcher
Olaylar
 Olay Özet Tanımlayan:
 Inherited[broadcast olayı] Flash Player veya AIR uygulaması işletim sistemi odağına gelip etkin olduğunda gönderilir.EventDispatcher
 Inherited[broadcast olayı] Çalışan Flash Player veya AIR uygulaması sistem odağını kaybettiğinde ve etkin olmayan duruma geldiğinde gönderilir.EventDispatcher
  Worker (işçi) öğesinin state özelliğinin değeri değiştiğinde gönderilir.Worker
Özellik Ayrıntısı

current

özellik
current:Worker  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Geçerli kodu içeren worker (işçi) öğesine erişim sağlar



Uygulama
    public static function get current():Worker

isPrimordial

özellik 
isPrimordial:Boolean  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Bu worker (işçi) öğesinin ilkel bir worker (işçi) olup olmadığını belirtir.

İlkel worker (işçi), ilk swf'nin çalıştığı worker (işçi) öğesidir. Bu worker (işçi), ekranda görüntü oluşturmayı kontrol eder.

Bu özellik, ilkel worker (işçi) ve arka plan worker (işçi) öğesinin aynı swf dosyasının iki örneği olduğu bir uygulamayı tasarlamak için kullanılabilir. Alternatif olarak, arka plan worker (işçi) öğesinin, ilkel worker (işçi) öğesinden farklı bir swf dosyasına derlenmiş farklı bir kod kullanması için kodunuzu yapılandırabilirsiniz.



Uygulama
    public function get isPrimordial():Boolean

isSupported

özellik 
isSupported:Boolean  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Geçerli çalışma zamanı bağlamının eşzamanlı kod yürütme için Worker nesnelerinin kullanımını destekleyip desteklemediğini belirtir.

Eşzamanlılık kullanılabiliyorsa, bu özelliğin değeri true olur.



Uygulama
    public static function get isSupported():Boolean

state

özellik 
state:String  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Worker (işçi) öğesinin yaşam döngüsündeki geçerli durumu. WorkerState sınıfında bu özellik için olası değerler tanımlanmıştır.



Uygulama
    public function get state():String

İlgili API Öğeleri

Yöntem Ayrıntısı

addEventListener

()yöntem
override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

EventDispatcher nesnesi olan bir olay dinleyici nesnesini, dinleyicinin bir olayın bildirimini alması için kaydeder. Belirli türde bir olay, aşama ve öncelik için görüntüleme listesindeki tüm düğümlere olay dinleyicilerini kaydedebilirsiniz.

Bir olay dinleyicisini başarıyla kaydettikten sonra, addEventListener() öğesine ek çağrılar yaparak önceliğini değiştiremezsiniz. Bir dinleyicinin önceliğini değiştirmek için, ilk olarak removeListener() öğesini çağırmanız gerekir. Daha sonra dinleyiciyi yeni öncelik seviyesiyle kaydedebilirsiniz.

Dinleyici kaydedildikten sonra, farklı bir type veya useCapture değeriyle addEventListener() öğesine yapılan çağrılar, ayrı bir dinleyici kaydının oluşturulmasıyla sonuçlanır. Örneğin, ilk olarak useCapture true değerine ayarlanmış durumdayken bir dinleyiciyi kaydederseniz, dinleyici yalnızca yakalama aşaması boyunca dinleme işlemi yapar. Aynı dinleyici nesnesini kullanarak, ancak useCapture false değerine ayarlanmış durumdayken tekrar addEventListener() öğesini çağırırsanız, iki ayrı dinleyiciniz olur: bunlardan biri yakalama aşamasında dinleme işlemi yapar, diğeri ise hedef ve köpürme aşamasında dinleme işlemi yapar.

Yalnızca hedef aşaması veya köpürme aşaması için bir olay dinleyicisini kaydedemezsiniz. Köpürme yalnızca hedef düğümün alt öğeleri için geçerli olduğundan, bu aşamalar kayıt sırasında birleştirilir.

Artık bir olay dinleyicisine ihtiyacınız olmadığında, removeEventListener() öğesini çağırarak olay dinleyicisini kaldırın, aksi takdirde bellek sorunları oluşabilir. Çöp toplayıcısı, gönderen nesne var olduğu sürece dinleyiciyi kaldırmadığından, (useWeakReference parametresi true olarak ayarlı değilse) olay dinleyicileri otomatik olarak bellekten kaldırılmaz.

Bir EventDispatcher örneği kopyalandığında, o örneğe ekli olan olay dinleyicileri kopyalanmaz. (Yeni oluşturulmuş düğümünüz için bir olay dinleyicisi gerekiyorsa, düğümü oluşturduktan sonra dinleyiciyi eklemeniz gerekir.) Ancak bir EventDispatcher örneğini taşırsanız, örneğe ekli olan olay dinleyicileri de onunla birlikte taşınır.

Bir olay düğümde işlenirken olay dinleyicisi o düğüme kaydediliyorsa, geçerli aşama sırasında olay dinleyicisi tetiklenmez ancak olay akışındaki köpürme aşaması gibi sonraki bir aşamada tetiklenebilir.

Bir olay düğümde işlenirken olay dinleyicisi o düğümden kaldırılırsa, geçerli eylemler tetiklenmeye devam eder. Olay dinleyicisi kaldırıldıktan sonra asla tekrar çağrılmaz (ileride işlenmek üzere tekrar kaydedilmediği sürece).

Parametreler

type:String — Olay türü.
 
listener:Function — Olayı işleyen dinleyici işlevi. Bu işlev, bu örnekte gösterildiği gibi, Event nesnesini tek parametresi olarak kabul etmeli ve hiçbir öğe döndürmemelidir:
function(evt:Event):void

İşleve herhangi bir ad verilebilir.

 
useCapture:Boolean (default = false)Dinleyicinin yakalama aşamasında mı, yoksa hedef ve köpürme aşamalarında mı çalıştığını belirler. useCapture, true olarak ayarlanırsa dinleyici, olayı hedef veya köpürme aşamasında değil de yalnızca yakalama aşamasında işler. useCapture false değerindeyse dinleyici, olayı yalnızca hedef veya köpürme aşamasında işler. Olayı üç aşamada da dinlemek için addEventListener öğesini iki kez, biri useCapture true değerine ayarlanmış olarak, diğeri de useCapture false değerine ayarlanmış olarak çağırın.
 
priority:int (default = 0) — Olay dinleyicisinin öncelik düzeyi. Öncelik, işaretli 32 bit tam sayı tarafından atanır. Sayı ne kadar yüksekse, öncelik de o kadar yüksek olur. n önceliğine sahip tüm dinleyiciler, n-1 önceliğine sahip dinleyicilerden önce işlenir. İki veya daha fazla dinleyici aynı önceliği paylaşırsa, eklendikleri sıraya göre işlenirler. Varsayılan öncelik 0'dır.
 
useWeakReference:Boolean (default = false) — Dinleyici başvurusunun güçlü mü, yoksa zayıf mı olduğunu belirler. Güçlü bir başvuru (varsayılan), dinleyicinizin çöp toplama işlemine tabi tutulmasını önler. Zayıf bir başvuru, bu işlevi yapmaz.

Sınıf düzeyi üye işlevleri, çöp toplama işlemine tabi değildir. Böylece onları çöp toplama işlemine tabi tutmadan, sınıf düzeyi üye işlevleri için useWeakReference öğesini true değerine ayarlayabilirsiniz. Yuvalanmış iç işlev olan bir dinleyici için useWeakReference öğesini true olarak ayarladığınızda, işlev çöp toplama işlemine tabi tutulur ve kalıcı olmaz. İç işleve başvuru oluşturursanız (başka bir değişkende kaydederseniz), çöp toplama işlemine tabi tutulmaz ve kalıcı olarak kalır.

createMessageChannel

()yöntem 
public function createMessageChannel(receiver:Worker):MessageChannel

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Yöntemin başka bir alıcı worker (işçi) öğesine çağrıldığı worker (işçi) öğesinden mesaj göndermek için yeni bir MessageChannel örneği oluşturur. MessageChannel nesnesini oluşturan worker (işçi) öğesindeki kod, receiver argümanı olarak belirtilen Worker nesnesine tek yönlü mesajlar göndermek için bunu kullanabilir.

MessageChannel örneği, bir Worker örneğinden diğerine mesaj ve veri göndermek için kullanılabilse de, en az bir MessageChannel örneğinin, Worker nesnesinin setSharedProperty() yöntemi çağrılarak paylaşılan bir özellik olarak alt Worker (İşçi) öğesine iletilmesi gerekir.

    outgoingChannel = Worker.current.createMessageChannel(bgWorker);
    incomingChannel = bgWorker.createMessageChannel(Worker.current);
    
    bgWorker.setSharedProperty("incoming", outgoingChannel);
    bgWorker.setSharedProperty("outgoing", incomingChannel);
    
    // listen for messages from the receiving MessageChannel
    // This event is triggered when the background sends a message to this worker
    incomingChannel.addEventListener(Event.CHANNEL_MESSAGE, incomingMessageHandler);

Parametreler

receiver:Worker — Oluşturulan mesaj kanalı aracılığıyla iletilen mesajları alacak worker (işçi)

Döndürür
MessageChannel — İşlem tarafından oluşturulan MessageChannel nesnesi

getSharedProperty

()yöntem 
public function getSharedProperty(key:String):*

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Adlandırılmış bir anahtar ile bu worker (işçi) öğesinde saklanan bir değeri alır.

Alt worker (işçi) öğesindeki kod, worker (işçi) swf dosyasının ana sınıfının yapıcısındaki kadar erken bir değer almak için bu yöntemi çağırabilir.

Parametreler

key:String — Alınacak paylaşılan özelliğin adı

Döndürür
* — Belirtilen anahtar ile saklanan paylaşılan özellik değeri veya belirtilen anahtar için saklanan bir değer yoksa null

removeEventListener

()yöntem 
override public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

EventDispatcher nesnesinden bir dinleyiciyi kaldırır. EventDispatcher nesnesiyle kayıtlı eşlenen bir dinleyici yoksa, bu yönteme yapılan çağrının herhangi bir etkisi yoktur.

Parametreler

type:String — Olay türü.
 
listener:Function — Kaldırılacak dinleyici nesnesi.
 
useCapture:Boolean (default = false)Dinleyicinin yakalama aşaması için mi yoksa hedef ve köpürme aşamaları için mi kaydedildiğini belirtir. Dinleyici, hem yakalama aşaması hem de hedef ve köpürme aşamaları için kaydedildiyse, removeEventListener() öğesine yapılan iki çağrı, ikisini de kaldırmak için gereklidir. useCapture() öğesine sahip çağrılardan biri true, useCapture() öğesine sahip olan diğeri ise false olarak ayarlanmıştır.

setSharedProperty

()yöntem 
public function setSharedProperty(key:String, value:*):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Worker (işçi) öğesinin swf dosyasında çalışan kod için kullanılabilir olan adlandırılmış bir değer sağlar.

Worker (işçi) öğesinin start() yöntemini çağırmadan önce bu yöntemi çağırabilirsiniz. Bu durumda paylaşılan özellik, yapı anında worker (işçi) öğesinin swf dosyasındaki kod için kullanılabilir olur.

value parametresine iletilen değer neredeyse herhangi bir nesne olabilir. Aşağıda belirtilen istisnalar dışında, value parametresine iletilen herhangi bir nesne, referans tarafından iletilmez. setSharedProperty() çağrıldıktan sonra bir worker (işçi) öğesindeki nesneye yapılan herhangi bir değişiklik, diğer worker (işçi) öğesine taşınmaz. Nesne AMF3 biçimine serileştirilerek ve alıcı worker (işçi) öğesindeki yeni bir nesneye serileştirilmesi kaldırılarak kopyalanır. Bu nedenle, görüntüleme nesneleri de dahil olmak üzere, AMF3 biçiminde serileştirilemeyen herhangi bir nesne, value parametresine iletilemez. Özel sınıfın düzgün şekilde iletilmesi için, flash.net.registerClassAlias() işlevi veya [RemoteClass] meta verisi kullanılarak sınıf tanımının kaydedilmesi gerekir. Bu tekniklerden herhangi biriyle, her iki worker (işçi) öğesinin sınıf sürümü için aynı diğer ad kullanılmalıdır.

Bu kural için, nesnelerin worker (işçi) öğeleri arasında paylaşılmadığı istisna niteliğinde beş tür nesne vardır:

  • Worker
  • MessageChannel
  • paylaşılabilir ByteArray (shareable özelliği true olarak ayarlanmış bir ByteArray nesnesi
  • Mutex
  • Durum

Bu nesnelerin bir örneğini value parametresine iletirseniz, her worker (işçi) öğesinin aynı temel nesneye bir referansı vardır. Bir worker (işçi) öğesindeki örnek üzerinde yapılan değişiklikler, diğer worker (işçi) öğelerinde hemen kullanılabilir olur. Ayrıca, setSharedProperty() yöntemini kullanarak bu nesnelerin aynı örneğini birden çok defa iletirseniz çalışma zamanı, alıcı worker (işçi) öğesinde nesnenin yeni bir kopyasını oluşturmaz. Bunun yerine, aynı referans yeniden kullanılır ve böylece sistem belleği kullanımı azaltılır.

value argümanı için null veya undefined ile bu yöntem çağrıldığında, belirtilen key argümanı için önceden ayarlanan herhangi bir değer temizlenir. Bir değer bu şekilde temizlendiğinde, değerin referansı kaldırılır ve böylece çöp toplanmasına olanak sağlanır.

Key argümanında herhangi bir String değeri kullanabilirsiniz. Bu paylaşılan özellikler, bir worker (işçi) öğesine erişimi olan herhangi bir kod için kullanılabilir. Yanlışlıkla bir değerin üzerine yazılmasını önlemek istiyorsanız, tuş adlarınızı benzersiz yapmaya çalışmak için benzer mekanizma, önek veya sonek kullanmayı deneyin.

Parametreler

key:String — Paylaşılan özelliğin saklandığı ad.
 
value:* — Paylaşılan özelliğin değeri.

İlgili API Öğeleri

start

()yöntem 
public function start():void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Worker (işçi) öğesinin yürütülmesini başlatır. Çalışma zamanı, worker (işçi) iş parçacığını oluşturur ve worker (işçi) swf'sinin ana sınıfının yapıcısını çağırır.

Bu işlem senkronize değildir. Worker (işçi) başlangıcı tamamlandıktan sonra, state özelliğini WorkerState.RUNNING olarak değiştirir ve bir workerState olayı gönderir.

terminate

()yöntem 
public function terminate():Boolean

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Bu worker (işçi) öğesinin kodunun yürütmesini durdurur. Bu yöntem çağrıldığında, worker (işçi) öğesinin swf dosyasındaki geçerli ActionScript durdurulur.

Döndürür
Boolean — Worker (işçi) öğesindeki kod çalışıyorsa ve kesintiye uğradıysa true veya worker (işçi) öğesi hiç başlatılmadıysa false
Olay Ayrıntısı

workerState

Olay
Olay Nesne Türü: flash.events.Event
özellik Event.type = flash.events.Event.WORKER_STATE

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.4, AIR 3.4

Worker (işçi) öğesinin state özelliğinin değeri değiştiğinde gönderilir.

Event.WORKER_STATE sabiti, workerState olay nesnesinin type özelliğinin değerini tanımlar.

Bu olay şu özelliklere sahiptir:

ÖzellikDeğer
bubblesfalse
cancelablefalse; iptal edilecek varsayılan davranış yoktur.
currentTargetBu Event nesnesini olay dinleyicisiyle etkin olarak işleyen nesne.
targetBu olayı gönderen nesne.
WorkerExample.as

Aşağıdaki örnek, arka planda bir görev gerçekleştirmek için bir Worker nesnesinin kullanılmasını gösterir. Ayrıca worker (işçi) öğeleri arasında özel bir sınıf nesnesinin iletilmesi de dahil, üst worker (işçi) ile arka plan worker (işçi) arasındaki iletişimi de gösterir.

Bu örnek üç ActionScript sınıfından oluşur: WorkerExample ana sınıf ve üst worker (işçi) öğesidir. BackgroundWorker, arka plan işini yapan sınıftır. Bu, arka plan worker (işçi) swf'nin ana sınıfı olarak derlenmiştir. CountResult, iki worker (işçi) arasında birden çok değer yerine tek bir nesne olarak verileri iletmek için kullanılan özel bir sınıftır.

Bu örnekte arka plan worker (işçi), üst worker (işçi) tarafından belirtilen bir sayıya kadar döngüde sayılır. İşinde ilerledikçe, üst worker (işçi) öğesine ilerleme mesajları gönderir. Sonuç olarak sayım bittiğinde arka plan worker (işçi), üst worker (işçi) öğesine bir mesaj göndererek sayımın bittiğini ve ne kadar sürdüğünü bildirir.

WorkerExample sınıfı, swf'nin ana sınıfı, bu nedenle ilkel worker (işçi) öğesinin ana sınıfıdır. initialize() yönteminde kod, [Embed] etiketi kullanılarak gömülen BackgroundWorker sınıfının baytlarını kullanarak arka plan worker (işçi) nesnesini oluşturur.

WorkerDomain.createWorker() çağrılarak arka plan worker (işçi) öğesi oluşturulduktan sonra kod, worker (işçi) öğeleri arasında iletişim kurar. Önce kod bir MessageChannel nesneleri kümesi oluşturur. setSharedProperty() yöntemini çağırarak bunları arka plan worker (işçi) öğesine iletir. Son olarak arka plan Worker nesnesinin workerState olayına kaydolur ve start() yöntemini çağırarak worker (işçi) öğesini başlatır.

Arka plan worker (işçi) öğesi işini yaptıkça, üst worker (işçi) öğesine ilerleme mesajları (ve en sonunda sonucu) gönderir. Üst worker (işçi) öğesi, ilerleme çubuğunu ve metin göstergesini güncellemek için bu bilgileri kullanır.

package
{
    import com.adobe.example.vo.CountResult;
    
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.net.registerClassAlias;
    import flash.system.MessageChannel;
    import flash.system.Worker;
    import flash.system.WorkerDomain;
    import flash.system.WorkerState;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    import flash.utils.ByteArray;
    
    public class WorkerExample extends Sprite
    {
        // ------- Embed the background worker swf as a ByteArray -------
        [Embed(source="../workerswfs/BackgroundWorker.swf", mimeType="application/octet-stream")]
        private static var BackgroundWorker_ByteClass:Class;
        public static function get BackgroundWorker():ByteArray
        {
            return new BackgroundWorker_ByteClass();
        }
        
        
        private var bgWorker:Worker;
        private var bgWorkerCommandChannel:MessageChannel;
        private var progressChannel:MessageChannel;
        private var resultChannel:MessageChannel;
        
        
        public function WorkerExample()
        {
            initialize();
        }
        
        
        private function initialize():void
        {
            // create the user interface
            setupStage();
            createStatusText();
            createProgressBar();
            
            // Register the alias so we can pass CountResult objects between workers
            registerClassAlias("com.adobe.test.vo.CountResult", CountResult);
            
            // Create the background worker
            bgWorker = WorkerDomain.current.createWorker(BackgroundWorker);
            
            // Set up the MessageChannels for communication between workers
            bgWorkerCommandChannel = Worker.current.createMessageChannel(bgWorker);
            bgWorker.setSharedProperty("incomingCommandChannel", bgWorkerCommandChannel);
            
            progressChannel = bgWorker.createMessageChannel(Worker.current);
            progressChannel.addEventListener(Event.CHANNEL_MESSAGE, handleProgressMessage)
            bgWorker.setSharedProperty("progressChannel", progressChannel);
            
            resultChannel = bgWorker.createMessageChannel(Worker.current);
            resultChannel.addEventListener(Event.CHANNEL_MESSAGE, handleResultMessage);
            bgWorker.setSharedProperty("resultChannel", resultChannel);
            
            // Start the worker
            bgWorker.addEventListener(Event.WORKER_STATE, handleBGWorkerStateChange);
            bgWorker.start();
        }
        
        
        private function handleBGWorkerStateChange(event:Event):void
        {
            if (bgWorker.state == WorkerState.RUNNING) 
            {
                _statusText.text = "Background worker started";
                bgWorkerCommandChannel.send(["startCount", 100000000]);
            }
        }
        
        
        private function handleProgressMessage(event:Event):void
        {
            var percentComplete:Number = progressChannel.receive();
            setPercentComplete(percentComplete);
            _statusText.text = Math.round(percentComplete).toString() + "% complete";
        }
        
        
        private function handleResultMessage(event:Event):void
        {
            var result:CountResult = resultChannel.receive() as CountResult;
            setPercentComplete(100);
            _statusText.text = "Counted to " + result.countTarget + " in " + (Math.round(result.countDurationSeconds * 10) / 10) + " seconds";
        }
        
        
        // ------- Create UI -------
        
        private var _currentPercentComplete:int = 0;
        private var _needsValidation:Boolean = false;
        private var _statusText:TextField;
        private var _progressBarRect:Shape;
        private var _progressBar:Shape;
        
        private function setupStage():void
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.stageWidth = 800;
            stage.stageHeight = 600;
            stage.color = 0xffffff;
        }
        
        
        private function createStatusText():void
        {
            _statusText = new TextField();
            _statusText.width = 400;
            _statusText.height = 25;
            _statusText.x = (stage.stageWidth - _statusText.width) / 2;
            _statusText.y = 150;
            
            var statusTextFormat:TextFormat = new TextFormat();
            statusTextFormat.color = 0xeeeeee;
            statusTextFormat.font = "Verdana";
            statusTextFormat.align = TextFormatAlign.CENTER;
            statusTextFormat.size = 16;
            _statusText.defaultTextFormat = statusTextFormat;
            _statusText.wordWrap = false;
            _statusText.opaqueBackground = 0x999999;
            _statusText.selectable = false;
            
            _statusText.text = "Initializing...";
            
            addChild(_statusText);
        }
        
        
        private function createProgressBar():void
        {
            _progressBarRect = new Shape();
            _progressBarRect.graphics.beginFill(0x000000, 0);
            _progressBarRect.graphics.lineStyle(2, 0x000000);
            _progressBarRect.graphics.drawRect(0, 0, 400, 30);
            _progressBarRect.graphics.endFill();
            
            _progressBarRect.x = (stage.stageWidth - _progressBarRect.width) / 2;
            _progressBarRect.y = 100;
            
            addChild(_progressBarRect);
            
            _progressBar = new Shape();
            _progressBar.graphics.beginFill(0x0000ee);
            _progressBar.graphics.drawRect(0, 0, 391, 21);
            _progressBar.x = _progressBarRect.x + 4;
            _progressBar.y = _progressBarRect.y + 4;
            
            addChild(_progressBar);
            
            _progressBar.scaleX = 0;
        }
        
        private function setPercentComplete(percentComplete:int):void
        {
            if (_currentPercentComplete == percentComplete)
                return;
            
            _currentPercentComplete = percentComplete;
            invalidateValue();
        }
        
        
        private function invalidateValue():void
        {
            if (_needsValidation)
                return;
            
            _needsValidation = true;
            addEventListener(Event.EXIT_FRAME, validate);
        }
        
        private function validate(event:Event):void
        {
            removeEventListener(Event.EXIT_FRAME, validate);
            _needsValidation = false;
            
            _redrawProgressBar();
        }
        
        private function _redrawProgressBar():void
        {
            _progressBar.scaleX = _currentPercentComplete / 100;
        }
    }
}
WorkerExample.BackgroundWorker.as

Bu sınıf, arka plan worker (işçi) öğesi için kodu içerir. Bu sınıf, kendi swf dosyasına derlenir. Swf dosyası daha sonra ana swf dosyasına gömülür.

initialize() yönteminde, üst worker (işçi) öğesinin iletildiği MessageChannel nesnelerini alır. Bunlar iki worker (işçi) öğesi arasında iletişim için kullanılır.

Üst worker (işçi) bir mesaj göndermek için commandChannel mesaj kanalında send() yöntemini çağırır. Arka plan worker (işçi) öğesinde çalışma zamanı, handleCommandMessage() yöntemini çağırarak channelMessage olayını gönderir.

Arka plan worker (işçi) öğesinin gerçek işi, count() yönteminde gerçekleşir. Arka plan worker (işçi) sayımına devam ettikçe, progressChannel MessageChannel nesnesinde send() yöntemini çağırarak üst worker (işçi) öğesine ilerleme mesajları gönderir. Sayımı bittiğinde, resultChannel MessageChannel nesnesinde send() yöntemini çağırır.

package com.adobe.example.workers
{
    import com.adobe.example.vo.CountResult;
    
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.registerClassAlias;
    import flash.system.MessageChannel;
    import flash.system.Worker;
    import flash.utils.getTimer;
    
    public class BackgroundWorker extends Sprite
    {
        private var commandChannel:MessageChannel;
        private var progressChannel:MessageChannel;
        private var resultChannel:MessageChannel;
        
        
        public function BackgroundWorker()
        {
            initialize();
        }
        
        
        private function initialize():void
        {
            registerClassAlias("com.adobe.test.vo.CountResult", CountResult);
            
            // Get the MessageChannel objects to use for communicating between workers
            // This one is for receiving messages from the parent worker
            commandChannel = Worker.current.getSharedProperty("incomingCommandChannel") as MessageChannel;
            commandChannel.addEventListener(Event.CHANNEL_MESSAGE, handleCommandMessage);
            // These are for sending messages to the parent worker
            progressChannel = Worker.current.getSharedProperty("progressChannel") as MessageChannel;
            resultChannel = Worker.current.getSharedProperty("resultChannel") as MessageChannel;
        }        
        
        
        private function handleCommandMessage(event:Event):void
        {
            if (!commandChannel.messageAvailable)
                return;
            
            var message:Array = commandChannel.receive() as Array;
            
            if (message != null && message[0] == "startCount")
            {
                count(uint(message[1]));
            }
        }
        
        
        private function count(targetValue:uint):void
        {
            var startTime:int = getTimer();
            var onePercent:uint = uint(Math.ceil(targetValue / 100));
            var oneHalfPercent:Number = onePercent / 2;
            
            var i:uint = 0;
            while (i < targetValue)
            {
                i++;
                // only send progress messages every one-half-percent milestone
                // to avoid flooding the message channel
                if (i % oneHalfPercent == 0)
                {
                    progressChannel.send(i / onePercent);
                }
            }
            
            var elapsedTime:int = getTimer() - startTime;
            var result:CountResult = new CountResult(targetValue, elapsedTime / 1000);
            resultChannel.send(result);
            
            trace("counted to", targetValue.toString(), "in", elapsedTime, "milliseconds");
        }
    }
}
WorkerExample.CountResult.as

Bu sınıf, CountResult değer nesnesini tanımlar. Bu, iki worker (işçi) arasında iletilen özel bir sınıftır. Worker (işçi) öğeleri arasında özel bir sınıfı iletmek için her bir worker (işçi) aynı diğer adı kullanarak registerClassAlias() yöntemini çağırır.
package com.adobe.example.vo
{
    public class CountResult
    {
        public function CountResult(countTarget:uint=0, countTime:Number=0)
        {
            this.countTarget = countTarget;
            this.countDurationSeconds = countTime;
        }
        
        public var countTarget:uint;
        public var countDurationSeconds:Number;
    }
}
IOSWorkerExample.as

AIR Sürüm 19'dan itibaren iOS'a eş zamanlı kullanım desteği eklenmiştir. SWF yükleme ve çalışana bayt dizisi geçirme farklılıkları dışında her şey Flash/AIR Android ile uyumunu korur.

1. ActionScript kodu içeren bir uzak SWF'nin dinamik olarak yüklenmesi çalışmadığından, uzak SWF çalışana kesilen SWF olarak geçirilmelidir. 2. [Embed] etiketi kullanılarak SWF'lerin (ABC koduna sahip) gömülmesi iOS'ta çalışmaz. Her ek çalışan ayrı bir SWF'den oluşturulur. Yeni bir Worker sınıfı örneği oluşturmak için, arka plan worker (işçi) öğesinin swf baytlarını içeren bir ByteArray öğesini WorkerDomain sınıfının createWorker() yöntemine argüman olarak iletin.

İOS'ta bu amaçla bir SWF'nin baytlarına erişmenin iki genel yolu vardır: Birinci yolu bir dış SWF dosyası yüklemek için Loader kullanılması, ikinci yolu ise SWF dosyasını yüklemek için URLLoader kullanılmasıdır.

Aşağıdaki örnekte SWF dosyasını yüklemek için Loader API'sı kullanılır.

package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLRequest;
    import flash.system.ApplicationDomain;
    import flash.system.LoaderContext;
    import flash.system.MessageChannel;
    import flash.system.Worker;
    import flash.system.WorkerDomain;
    import flash.text.TextField;
    import flash.text.TextFormat;

    
    public class IOSWorkerExample extends Sprite
    {
        public var worker:Worker;
        public var bm:MessageChannel;
        public var mb:MessageChannel;
        public var tf:TextField;
        public var tfrmt:TextFormat;
        
        public function IOSWorkerExample()
        {
            super();
            
            
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            
            tf=new TextField();
            tfrmt= new TextFormat()
            tfrmt.size=80;
            tf.textColor = 0xFFFFF; 
            tf.defaultTextFormat=tfrmt;
        
            addChild(tf);        
            //creating the urlRequest object that references the background worker.
            var _urlRequest:URLRequest = new URLRequest("IOSBackWorker.swf");
            var _loader:Loader = new Loader();
            var _lc:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
            
            _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
            _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
            _loader.load(_urlRequest, _lc);
            
        }
        // This function is called once the swf loading is completed
        public function completeHandler(e:Event):void
        { 
            
            worker = WorkerDomain.current.createWorker(e.target.bytes);
            bm = worker.createMessageChannel(Worker.current);
            mb = Worker.current.createMessageChannel(worker);
            
            worker.setSharedProperty("btm", bm);
            worker.setSharedProperty("mtb", mb);
            //adding event handler on message receive from background
            bm.addEventListener(Event.CHANNEL_MESSAGE, onBackToMain);
            
            worker.start();  
            bm.receive(true);
            
        }
        
        public function errorHandler(e:IOErrorEvent):void
        {
            
            trace("In IO ErrorEvent Handler  "+e.text);
        }
        
        //This function is called when the main thread receives the message from the background worker.
        public function onBackToMain(event:Event):void
        {
            
            if(bm.messageAvailable)
            {
                // displaying the percentages based on the message received from the background.
                var progress:Number = bm.receive();
                trace("progress   "+progress);
                
                tf.text= progress.toString();
            }
        }
        
    }
}
IOSBackWorker.as

Loader öğesinin yükleme işlevi çağrıldığında kod yürütüldüğünden, arka plan çalışanına bu örnekte gösterildiği gibi bir isPrimordial özellik işareti koyulması gerekir.
package
{
    import flash.display.Sprite;
    import flash.system.MessageChannel;
    import flash.system.Worker;
    import flash.utils.ByteArray;
    import flash.utils.getTimer;
    
    public class IOSBackWorker extends Sprite
    {
        private var memory:ByteArray = new ByteArray();
        private var bm:MessageChannel;
        private var mb:MessageChannel;
        
        public function IOSBackWorker()
        {
            if(!Worker.current.isPrimordial)
            {
                memory.shareable = true;
                // creating objects of message channels
                bm = Worker.current.getSharedProperty("btm");
                mb = Worker.current.getSharedProperty("mtb");
                
                // calculating the percentage
                trace("message came");
                var j:Number =1;
                while (j<1000)
                {
                    for(var i=0;i<100;i++){}
                    var startTime=getTimer();
                    // adding delay
                    while (getTimer()-startTime <100);
                    
                    trace(j, (100*j)/1000);
                    var progress:Number=(100*j)/1000;
                    // sending the percentage to the main thread
                    bm.send(progress);                
                    
                    j++;
                }            
            }
        }        
    }
}




[ X ]Niçin İngilizce?
ActionScript 3.0 Başvurusu'ndaki içerik İngilizce görünür

ActionScript 3.0 Başvurusu'nun tüm bölümleri tüm dillere çevrilmemiştir. Bir dil öğesi çevrilmediğinde İngilizce görünür. Örneğin, ga.controls.HelpBox sınıfı hiçbir dile çevrilmez. Bu nedenle, başvurunun Türkçe versiyonunda ga.controls.HelpBox sınıfı İngilizce görünür.