Flash Worker imitiert den HTML5-Stil, ermöglicht das Portieren von JS-Programmen und wird für intensives Computer in Browsern mit niedriger Version verwendet.
Das Hauptprogramm erstellt eine Unterprogramme über WebWorker . (Übergeben im Bytearray der SWF -Datei der Subroutine)
Die Unterroutine kann message Nachrichtenereignis, postMessage -Methode und andere Funktionen durch Erben WebWorkerContext erhalten.
Hinweis: Die SDK -Version erfordert 11,5 oder höher.
Die postMessage -Methode hat nicht das Konzept der übertragbaren Objekte in HTML5.可共享变量werden durch setSharedObject und getSharedObject -Methoden weitergeleitet.
WebWorker -Klasse hat ein tag -Attribut hinzugefügt, um die Assoziation einiger Informationen zu erleichtern. (Die Klasse von Flash ist geschlossen und kann keine zusätzlichen Attribute hinzufügen. Sie kann nur mit Informationen über Unterklassen oder Wörterbuch zugeordnet werden, was problematischer ist)
Nachdem WebWorker erstellt wurde, können Sie postMessage . Das Programm wird die Nachricht in der Warteschlange vorübergehend aufzeichnen und erhalten sie nach der Initialisierung der Unterroutine.
Die statische isMainThread -Methode wurde hinzugefügt, um festzustellen, ob es derzeit das Hauptprogramm ist, so dass es für das Hauptprogramm und die Unterroutine bequem ist, eine SWF -Datei zu teilen.
// Startup.as
public class Startup extends Sprite {
...
public function Startup () {
if (WebWorker . isMainThread()) {
new Main( loaderInfo . bytes ) ;
} else {
new Child() ;
}
}
}
// Main.as
public class Main {
...
public function Main ( workerBytes : ByteArray ) {
var worker : WebWorker = new WebWorker(workerBytes) ;
worker . addEventListener ( 'message' , msgHander) ;
worker . postMessage( 'hello' ) ;
}
private function msgHander ( e : WebWorkerEvent ) : void {
var msg : * = e . data ;
trace ( 'msg from worker:' , msg) ;
}
}
// Child.as
public class Child extends WebWorkerContext {
public function Child () {
addEventListener ( 'message' , msgHander) ;
}
private function msgHander ( e : WebWorkerEvent ) : void {
var msg : * = e . data ;
trace ( 'msg from main:' , msg) ;
postMessage(msg + ' world' ) ;
}
}https://github.com/etherdream/webscrypt/tree/master/src/mod_flash/src