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 条评论
登录 后参与评论

相关文章

来自专栏大内老A

WCF中的Binding模型之一: Binding模型简介

一、 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,...

1785
来自专栏Java3y

数据链路层

数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

2101
来自专栏耕耘实录

批量创建用户并使用sudo和ACL来控制用户权限

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。

914
来自专栏developerHaoz 的安卓之旅

Android 一起来看看面试必问的消息机制

Android 消息机制的主要是指的是 Handler 的运行机制以及 Handler 所附带的 MessageQueue 和 Looper 的工作过程,这三者...

873
来自专栏Golang语言社区

golang(GO语言)http详解简单基础

因为好像长时间的写PHP可能大家感觉烦躁了,所以写一点golang的东西大家可以拿去玩玩,golang在web开发中让你得心应手,其实也是很好的东西,只要你玩进...

4716
来自专栏刺客博客

TCP/UDP常用端口列表

5334
来自专栏大内老A

WCF中的Binding模型之一: Binding模型简介

一、 信道层与服务模型层(Channel Layer and Service Mode Layer) 对于一个分布式应用的开发与设计来说,通信问题是不得不考虑,...

1777
来自专栏双十二技术哥

Android性能优化(七)之你真的理解ANR吗?

在上一篇文章《Android性能优化(六)之卡顿那些事》中,我们提到了卡顿的成因、检测卡顿的途径以及避免卡顿的方法。卡顿再扩大就会产生大名鼎鼎的ANR(Appl...

833
来自专栏码神联盟

ActiveMQ入门篇一入门实例2

继上两期的ActiveMQ的概念原理和经典示例之后,本期将隆重推出ActiveMQ是如何与SpringMVC进行集成使用的。 老规矩,在开始之前,先来点与之相关...

3429
来自专栏androidBlog

HandlerThread源码分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

661

扫码关注云+社区