Flash AS3教程:疑难杂症汇总

2019-10-08 17:56:04王冬梅

4、mask遮罩层
mask这个属性相信很多人看过帮助文档之后,不会仔细去看,特别是熟悉AS2的setMask的人
当然包括我自己也放过这样的错误,因此在此提起,希望各位新手在学习的时候,把帮助文档看清楚

QUOTE:

mask 属性
mask:DisplayObject[read-write]
语言版本 :ActionScript 3.0
Player 版本 :Flash Player 9
调用显示对象被指定的 mask 对象遮罩。 要确保当舞台缩放时蒙版仍然有效,mask 显示对象必须处于显示列表的活动部分。 但不绘制 mask 对象本身。 将 mask 设置为 null 可删除蒙版。
要能够缩放遮罩对象,它必须在显示列表中。 要能够拖动蒙版 Sprite 对象(通过调用其 startDrag() 方法),它必须在显示列表中。 要为基于 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值是依然不变的