TKCB 发表于 2018-11-5 11:52:31

【AS3 Worker(多线程)探秘 5 番外篇】———实际使用中的一些注意事项

本帖最后由 TKCB 于 2020-2-21 07:59 编辑

TKCB网站
网址:www.tkcb.cc


【AS3多线程探秘】——系列教程,共五篇目录1. 理解和看法,AS3中多线程的设计2. 跳过天坑3. 复杂对象及自定义对象4. 用子线程进行超级复杂计算5. 番外篇,实际使用中的一些注意事项

看这里,美女在这里! 事实上本来是要完结的,结果使用过程中有了一些坑人的地方,以及我在前面教程中说错了的地方。
所以特发此篇,以告诉大家一些注意事项和帮助大家更加顺利的使用多线程这个技术。
1. 使用调试模式或正常模式,发布SWF(主线程、子线程),并非一定 我使用Flash CS6,必须使用调试模式发布主线程fla,使用正常模式发布子线程fla。 但是我又使用了Flash CC2014,AIR 18,则两个线程fla都需要正常发布SWF可以才。 Flash Builder 4.7 可以用调试模式导出SWF(iloveas(格美)大神给我说的)。 所以都不是一定的,需要大家自己测试实验。
2. MessageChannel 通信的其他注意点 它虽然说是支持复杂对象通信,但实际只能是有简单对象组成的复杂对象,自定义对象应该也是只能由简单对象组成(String、Number、int、uint、Boolean)。 如果要传输更加复杂的对象必须考虑使用ByteArray
3.ByteArray通信的注意点 使用图片处理时候,通信的方式应该是:
//// 主线程代码,至少要发送两次(这样保险一些),保证发送的先后顺序
// bitData是要传入的BitmapData对象
// 1
var objWH : Object = { width : bitData.width, height : bitData.height };
// 2
var byte : ByteArray = new ByteArray();
byte.shareable = true;                                                // 这个必须的
byte.writeBytes( bitData.getPixels( bitData.rect )) ;                // 先使用get方法将位图对象转换成ByteArray对象,然后将返回的ByteArray写入byte中


//// 子线程代码
// 1
var objWH : Object = obj ;      // 接收的obj对象

// 2
var byte : ByteArray = byte as ByteArray ;                                        // 接收的ByteArray对象
var bitData : BitmapData = new BitmapData( objWH.width, objWH.height );                // 使用第一个接收的obj对象的宽和高设置
bitData.setPixels( bitData.rect, byte );                                        // 还原BitmapData对象
总之不能直接将BitmapData传入MessageChannel ,ByteArray也是需要使用MessageChannel 进行传递。
4. 我在使用Worker中传递大量对象的一些感慨 我在传送大量图片的时候,Worker有一些BUG,可能是我自己代码没写好吧,导致传递的对象有一些问题,最终放弃了使用多线程这个技术,使用了其他替代方法。 所以如果是传送大量的复杂对象时候,建议之前做好大量对象的测试。


免费是最昂贵的
银子还是要收的,因为 “免费的东西最昂贵” ,请深刻理解这句话的含义!!!


广告QQ(TKCB):2414268040(欢迎和我聊天交流,有朋自远方来不亦说乎)QQ群:96759336(AS3殿堂之路,Flash Animate AS3 AIR 技术交流)QQ群:705730359(H5天路历程,HTML5 CSS3 JaveScript技术交流)QQ群:463560360(King系列软件分享交流,TKCB 出品的 King 系列软件分享、使用、交流、反馈等)TKCB网站:www.tkcb.cc官方技术论坛:www.11ria.com
页: [1]
查看完整版本: 【AS3 Worker(多线程)探秘 5 番外篇】———实际使用中的一些注意事项

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)