Flash Actionscript 多线程Worker 压缩图片

package
{
        import flash.display.Bitmap;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.external.ExternalInterface;
        import flash.geom.Rectangle;
        import flash.system.MessageChannel;
        import flash.system.Worker;
        import flash.system.WorkerDomain;
        import flash.utils.ByteArray;public class WorkerTest extends Sprite
       {
               protected var mainToWorker:MessageChannel;
               protected var workerToMain:MessageChannel;
              
               protected var worker:Worker;
              
              [ Embed(source= "1.jpg")]
               public var Image1:Class;
              
               public function WorkerTest()
              {
                      /**
                      * Start Main thread
                      **/
                      if(Worker.current.isPrimordial){
                            //Create worker from our own loaderInfo.bytes
                           worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes);
                           
                            //Create messaging channels for 2-way messaging
                           mainToWorker = Worker.current.createMessageChannel(worker);
                           workerToMain = worker.createMessageChannel(Worker.current);
                           
                            var byteArray:ByteArray = Bitmap(new Image1()).bitmapData.getPixels(new Rectangle(0,0,300,300));
                           byteArray. shareable = true;        //使bytearray可以在两个线程中使用
                           
                            //Inject messaging channels as a shared property
                           worker.setSharedProperty( "data", byteArray);
                           
                            //Listen to the response from our worker
                           workerToMain.addEventListener(Event.CHANNEL_MESSAGE, onWorkerToMain);
                           
                            //Start worker (re-run document class)
                           worker.start();
                           
                     }
                      /**
                      * Start Worker thread
                      **/
                      else {
                           
                            //Inside of our worker, we can use static methods to
                            //access the shared messgaeChannel's
                            var data:ByteArray = Worker.current.getSharedProperty( "data");
                           workerToMain = Worker.current.getSharedProperty( "workerToMain" );
                           
                //这里可以做一些压缩的工作
                data.compress();
                           workerToMain.send(data);  //只要byteArray是shareable的,可以直接send
                           
                     }
              }
              //Messages to the worker thread
               protected function onWorkerToMain(event:Event): void {
                      //Trace out whatever message the worker has sent us.
                      var a:* = workerToMain.receive();
                      trace("[Worker] " + a);
                     ExternalInterface.call( "alert", a);     //debug版Flashbuilder4.6运行会收不到消息,但release版或断开debug连接就没问题
              }
       }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Winter漫聊技术

Android水波动画帮助类,一行代码实现View显示/隐藏/startActivity特效(0.3.1)

So,你可以如下compile该library了,也可以把这个类CircularAnim拷贝到项目里去。

592
来自专栏我杨某人的青春满是悔恨

UIScrollView进阶技巧

UIScrollView是iOS开发中经常用到的UI控件,像图片轮播之类的效果都可以用UIScrollView来实现,当然轮播什么的网上有很多教程了,我就不多说...

774
来自专栏转载gongluck的CSDN博客

cocos2dx 象棋

/******************************************************************* * Copyrigh...

2809
来自专栏知识分享

Android之网络摄像头

实现的功能就是两个手机在一个局域网内可以互相观看对方的摄像头图像,当然如果都是连接公网那么就能远程互看了,,,,和视频聊天差不多,,不过没有声音,,,,,,,,...

4287
来自专栏wblearn

Java小程序祝国庆快乐祝大家国庆节快乐

上面是用java的JFrame为基础实现的效果,下面用面向对象的思考分析并实现此效果:

771
来自专栏Hongten

java开发_系统托盘

========================================================================

612
来自专栏mukekeheart的iOS之旅

iOS学习——UIView的研究

在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于...

3788
来自专栏滕先生的博客

CALayer 图层概念二、CALayer属性二、方法

2807
来自专栏進无尽的文章

实践 -实现一款中间凸起的TabBar

这是看到一篇文章后感觉很有意思于是就把自己的效果改了改实现了一下,文末有原文链接。

1062
来自专栏向治洪

Android WindowManager详解

概述 WindowManager是Android中一个重要的服务(Service )。WindowManager Service 是全局的,是唯一的。它将用户的...

2189

扫码关注云+社区