Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.MovieClip;
- import flash.events.MouseEvent;
- import flash.events.Event;
- import flash.system.MessageChannel;
- import flash.system.Worker;
- import flash.system.WorkerDomain;
- //[SWF(frameRate=30)]
- public class Main extends MovieClip
- {
- // worker SWF
- [Embed(source="BackWorker.swf", mimeType="application/octet-stream")]
- private var WorkerSWF:Class;
- // worker object
- private var worker:Worker;
- // message channels
- private var wm:MessageChannel; // worker to main
- private var mw:MessageChannel; // main to worker
- public function Main()
- {
- // inst worker
- worker = WorkerDomain.current.createWorker(new WorkerSWF());
- // worker to main channel setup
- wm = worker.createMessageChannel(Worker.current);
- mw = Worker.current.createMessageChannel(worker);
- worker.setSharedProperty("wtm", wm);
- worker.setSharedProperty("mtw", mw);
- wm.addEventListener(Event.CHANNEL_MESSAGE, onWorkerToMain);
- mw.addEventListener(Event.CHANNEL_MESSAGE, onMainToWorker);
- // start worker
- worker.start();
- // ask worker if it's ready
- mw.send("AREYAREADY");
- }
- protected function onWorkerToMain(e:Event):void
- {
- if (e.currentTarget.messageAvailable)
- {
- // get message from worker
- var header:String = wm.receive();
- if (header == "YEP")
- {
- trace("Worker is ready. Telling worker to get to work and send back data.");
- mw.send("WORK");
- }
- else if (header == "NUMBER")
- {
- var num:Number = wm.receive();
- // we know this is the data we wanted.. just 500 * 500 + 500 / 500..
- trace("Worker result: " + num);
- }
- }
- }
- protected function onMainToWorker(e:Event):void {}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement