快速业务通道

Flash AS3教程:疑难杂症汇总

作者 凌众技术 来源 网页制作 浏览 发布时间 2012-03-10
示列表中。 要为基于 sprite 正在调度的 mouseDown 事件调用 startDrag() 方法,请将 sprite 的 buttonMode 属性设置为 true。

根据帮助文档的说法,如果要缩放遮罩层,就必须把遮罩层放在相应的显示列表中,也就是addChild(mask)
比如:我现在使用的是
stage.scaleMode = StageScaleMode.SHOW_ALL;
如果说你的遮罩层没有addChild那么,在缩放窗口的时候,mask是不会改变宽高;反之加入了显示列表,就会跟着窗口一起缩放
mask的拖拽和点击等事件也是如此!
综上所述:设置遮罩层最佳做法是放到显示列表,当然不排除有特别作用的

另外,你把mask的属性清空,本来被做为遮罩层的,就可以看的到了,否则是看不到遮罩层的

==================== 气 死 你 的 分 割 线 ====================

5、莫名其妙的mc
你使用Loader加载进来的mc,如果里面是动画,或者带有声音
你加载进来,就算你不addChild,他也在播放的,而且有时候你控制他stop,还控制不了。。
解决方案是:加stop(),做动画素材的时候,尽量把关键动画都做在主场景帧上,那么程序中就可以控制动画了
置于声音,还真是个头疼的东西,当然使用mc的同样管理方案也是可以的,但是我建议,把声音做到库中
然后使用ClassLoader把声音拿下来,然后用程序控制声音。

==================== 气 死 你 的 分 割 线 ====================

6、幽灵般的容器
一个容器,当被addChild后,你就可以直观的看得到他,但是你又removeChild,很多人都认为这样,容器就不存在了,实则不然,他还存在
比如你做一个飞机游戏,飞机爆炸后,你就会removeChild它,但是这样做是不够的,他依然还存在那个位置,而且x,y值是依然不变的
如果飞机上还写了碰撞检测,如果这时候有子弹飞过来,依然会算碰撞成功,还有很多类似的例子
个人建议:两个办法,简单的游戏嘛,可以设个全局逻辑值,当确定不需要在碰撞检测,把这个值变成false,每次检测碰撞,也检查一下这个值,就行了
第二个办法是复杂一点的,扩展容器类,侦听他的removedFromStage,removed事件和addedToStage,added事件,如果加入了,则容器中某个值等于true,反之是false
这个属性就可以叫  返回是否被加入显示对象
当然还有其他的办法,比如检查容器的contains方法,可以检查出当前容器中是否含有容器,如果removeChild,那么你检查结果就是不存在

==================== 气 死 你 的 分 割 线 ====================

oh。。先写这么多,肯定不是很完全。。一下子我也没办法把我

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号