Flash Worker imite le style HTML5, facilite le portage des programmes JS pour AS, et est utilisé pour l'informatique intensive dans les navigateurs à basse version.
Le programme principal crée un sous-programme via WebWorker . (Passé dans le bytearray du fichier SWF sous-programme)
Le sous-programme peut obtenir message , la méthode postMessage et d'autres fonctionnalités en héritant WebWorkerContext .
Remarque: la version SDK nécessite 11,5 ou plus.
La méthode postMessage n'a pas le concept d'objets transférables dans HTML5.可共享变量sont passées par setSharedObject et getSharedObject .
WebWorker a ajouté un attribut tag pour faciliter l'association de certaines informations. (La classe de Flash est fermée et ne peut pas ajouter d'attributs supplémentaires. Il ne peut être associé qu'aux informations via des sous-classes ou du dictionnaire, ce qui est plus gênant)
Une fois WebWorker créé, vous pouvez postMessage . Le programme enregistrera temporairement le message dans la file d'attente et le recevra après l'initialisation du sous-programme.
La méthode statique isMainThread a été ajoutée pour déterminer s'il s'agit actuellement du programme principal, ce qui rend pratique le programme principal et le sous-programme de partager un fichier SWF.
// 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