O Flash Worker imita o estilo HTML5, facilita a porte dos programas JS para o AS e é usado para computação intensiva em navegadores de baixa versão.
O programa principal cria uma sub -rotina através WebWorker . (Passado no bytearray do arquivo SWF da sub -rotina)
A sub -rotina pode obter message , o método postMessage e outros recursos herdando WebWorkerContext .
Nota: A versão SDK requer 11.5 ou superior.
O método postMessage não possui o conceito de objetos transferíveis no HTML5.可共享变量são passadas pelos métodos setSharedObject e getSharedObject .
WebWorker adicionou um atributo tag para facilitar a associação de algumas informações. (A classe de Flash está fechada e não pode adicionar atributos adicionais. Só pode ser associada a informações por meio de subclasses ou dicionários, o que é mais problemático)
Depois que WebWorker é criado, você pode postMessage . O programa gravará temporariamente a mensagem na fila e a receberá depois que a sub -rotina for inicializada.
O método estático isMainThread foi adicionado para determinar se atualmente é o programa principal, tornando -o conveniente para o programa principal e a sub -rotina compartilhar um arquivo 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