AS3 Worker DEMO
来源:互联网 发布:linux c udp socket 编辑:程序博客网 时间:2024/05/29 12:06
说实话,不知为何AS3 Worker DEMO的从使用,与API命名,感觉都是与统传的计算机中的线程的概念,名称,都很不同,初次使用,如果不写个DEMO,真的不知道怎么用;
AS3 Worker DEMO项目
Sender 与 Receiver的合并使用
testWorker.as是文档类用于:Sender 与 Receiver的合并使用;
建议不这么用,因为createMessageChannel的用法,很容易混淆Sender, Receiver;
(只能说API设计得不用好)
分开的Sender类与Receiver类的使用
Worker1.as 与 Worker2.as 分别是,主线程类,与后台线程类的用例;
这样对MessageChannel的理解上会好很多;
其次还有那个:ByteArray.shareable属性的功能,可以共享该bytes内存;
在Worker1.as与Worker2.as下分别断点信息:可以看到send(bytes), bytes = receive() as ByteArray,前、后者的bytes的断点变量地址是不一样的(这个原因是:所在的ApplicationDomain不一样,而表达式视图中,显示的:变量的地址(@xxxxxx)的就会不一样),但在整个进程程序中,他们的内存是一样的,具体看Worker1.as与Worker2.as的用例吧;
功能上与别的一些语言的线程用法、灵活度、功能,是没法比的;
将就一下使用吧。
参考官方Worker 通讯 的在线说明
快速look look大概用上的API简单说明
// worker domain
var workerDomain:WorkerDomain;
var newWorker:Worker = workerDomain.createWorker(null); // 以指定的swf的loaderInfo.bytes来创建,可以是当前主文档类的bytes,但这样写的话,就需要在代码中加这样的判断:Worker.current.isPrimordial来区别是否当前执行时是主线程
var workerList:Vector. = workerDomain.listWorkers(); // 提供对 WorkerDomain 中当前正在运行的 worker(Worker 实例的 state 属性为 WorkerState.RUNNING)集的访问。
WorkerDomain.isSupported; // 判断当前是否支持多线程
WorkerDomain.current; // 对代表代码当前正在其中运行的实例的引用
// worker var worker:Worker = Worker.current; // 对代码当前正在其中运行的 Worker 的引用 worker.isPrimordial; // 是否主线程 worker.state == WorkerState.NEW; // 刚刚新建,未运行 WorkerState.RUNNING; // 运行中 WorkerState.TERMINATED; // 已结束 worker.setSharedProperty("testObj", {"test":"TestValue"}); // 设置 var obj:* = worker.getSharedProperty("testObj"); worker.start(); // 开始 worker.terminate(); // 结束 worker.addEventListener(Event.WORKER_STATE, function(e:Event):void{}); // 为worker的state变化添加监听事件(callback) // message channel var messageChannel:MessageChannel = worker.createMessageChannel(worker); messageChannel; var messageChannelState:String = MessageChannelState.OPEN; // 已打开,正在使用 MessageChannelState.CLOSED; // 已关闭 MessageChannelState.CLOSING; // 关闭中,但还有剩余的数据正在传输中 messageChannel.send("test"); // 对接收方式的worker的messagechannel发送数据 var testStr:String = messageChannel.receive(); // 对发送方的数据接收 messageChannel.messageAvailable; // 判断当前是否有效数据; messageChannel.close(); // 关闭 messageChannel.addEventListener(Event.CHANNEL_MESSAGE, function(e:Event):void{}); // 当该channel收到数据时触发 messageChannel.addEventListener(Event.CHANNEL_STATE, function(e:Event):void{}); // 当该channel的state发生变化时触发 // using Embed swf, create background worker /* // Embed the SWF file [Embed(source="../swfs/BgWorker.swf", mimeType="application/octet-stream")] private static var BgWorker_ByteClass:Class; private function createWorker():void { // create the background worker var workerBytes:ByteArray = new BgWorker_ByteClass(); var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); } */ // using urlLoader swf, create bgworker /* // load the SWF file var workerLoader:URLLoader = new URLLoader(); workerLoader.dataFormat = URLLoaderDataFormat.BINARY; workerLoader.addEventListener(Event.COMPLETE, loadComplete); workerLoader.load(new URLRequest("BgWorker.swf")); private function loadComplete(event:Event):void { // create the background worker var workerBytes:ByteArray = event.target.data as ByteArray; var bgWorker:Worker = WorkerDomain.current.createWorker(workerBytes); // listen for worker state changes to know when the worker is running bgWorker.addEventListener(Event.WORKER_STATE, workerStateHandler); // set up communication between workers using // setSharedProperty(), createMessageChannel(), etc. // ... (not shown) bgWorker.start(); } */
- AS3 Worker DEMO
- ActionScript Worker Demo
- Worker
- AS3 对复杂对象的排序规则[DEMO]
- AS3 服务端、客户端协议路由简单写法 ---- AS3 Server、Client Router Demo
- AS3
- As3
- 接 flash flex as3 高级RIA web应用 内含大量demo
- Hand Detection AS3 基于摄像头的手势捕捉的 Flex AIR Demo
- as3 下使用include,类似,c/c++用法;前面不用#号,demo
- php+as3简单聊天室(总结一下前面仙剑demo都写了些什么)
- 用as3.0写的简单的三消游戏demo
- Worker.java
- Worker 模型
- Web Worker
- Worker Pools
- worker thread
- Master-Worker
- 80后的程序员,你们存了多少钱,买房还差多少?
- Android-自定义多TAB悬浮控件实现蘑菇街首页效果
- jquery easyui datagrid分页显示数据
- 微信开发-access_token 过期解决方法
- UITableView插入Section
- AS3 Worker DEMO
- Eclipse设置:背景与字体大小和xml文件中字体大小调整
- android:descendantFocusability用法简析
- jQuery 1.9/2.0/2.1及其以上 on 无效的解决办法
- Workspace in use or cannot be created, choose a different one.--错误解决办法
- iOS 开发 git和代码时xib出现冲突的解决办法
- 绝缘子的故障处理
- 酷狗界面仿照篇二
- java 给main(String args[]) 函数传参数