【AS3多线程探秘】——系列教程,共五篇
目录
天坑?Why?
我们继续接着上一个帖子,为什么会把这一个单独提出来,是因为AS3的多线程机制实际有坑人的地方,如果方法不对或许你怎么测试都是错误,总是感觉代码明明正常,为什么多线程就不能正常呢。
跳过天坑
就我目前遇到的,大概有下面几个坑(这都是Adobe没有告诉我们的):
• 天字一号坑:发布SWF的模式
• 天字二号坑:state属性
• 天字三号坑:子线程里的 trace()
天字一号坑:发布SWF的模式
说到发布模式,还要感谢 “iloveas” 舵主,因为这个是我不知道的,这个得感谢感谢他。
首先,肯定要用11.4及以上的Flash Player。
然后,子的线程的fla文档必须使用正常的发布swf,不能使用调试模式发布。
最后,主的线程的fla文档必须使用调试模式发布swf。
或许只有Adobe写这个代码的人才知道为什么要这样。
天字二号坑:state属性
子线程在刚启动之后,即使使用侦听器侦听Worker的状态,即使 state 为 WorkerState.RUNNING,也不一定两个线程真正的连接正常了。
我就在这个上面坑了,代码写的很标准,就TM得连接不上,这个也是靠 “iloveas” 舵主帮助我,因为他之前的游戏中使用了多线程技术。
必须延后一定时间,两个线程才是正常的。
我使用的方法是一个不停发送消息的方法机制,不断的检测两个线程之间是否连接正常,如果连接正常,子线程发送连接正常的消息,然后主线程停止检测。
这时候才可以运行后面的代码。
天字三号坑:子线程里的 trace()
子线程由于单独使用了AVM2虚拟机,所以子的trace()就看不到了,这个是Adobe有点懒,没弄好,按理说是可以对trace进行一些改良吧!!!
或许真的很麻烦,所以Adobe也就没有管这个问题,但这个也不是特别重要的问题。
大家可以把子线程的代码现在子线程里面测试一遍,正常之后在把两个线程进行组合使用。
源码送上:
下面放出第一个fla的源文件,主要是多线程的初步使用和天坑的注解:
(国际惯例,为了更多人看到而隐藏)
听我说一些废话吧