又逛了一遍gotoAndLearn,这个网站还是很勤奋的,不时的就会有更新的教程,还新加了论坛。推荐大家加入他们的邮件列表,这样就可以第一时间得到更新的消息。
这次看到了一个Flash 8 Alpha遮罩的教程,还是挺有启发的。
先来认识一下CacheAsBitmap属性:
如果设置为 true,则 Flash Player 将缓存影片剪辑的内部位图表示。这可以提高包含复杂矢量内容的影片剪辑的性能。具有已缓存位图的影片剪辑的所有矢量数据都会被绘制到位图而不是主舞台。然后,将位图复制到主舞台,作为对齐到最接近像素边界的未拉伸、未旋转的像素。对于父级对象,像素按一对一进行映射。如果位图的边界发生更改,则将重新创建位图而不会拉伸它。
除非将 cacheAsBitmap 属性设置为 true,否则不会创建内部位图。将影片剪辑的 cacheAsBitmap 属性设置为 true 后,呈现不会更改,但是,影片剪辑将自动执行像素对齐。动画速度可能会大大加快,具体取决于矢量内容的复杂性。
无论何时将滤镜应用于影片剪辑(当它的 filter 数组不为空时),cacheAsBitmap 属性将自动设置为 true。如果影片剪辑具有应用到它的滤镜,该影片剪辑的 cacheAsBitmap 将报告为 true,即使您将该属性设置为 false。如果清除影片剪辑的所有滤镜,则 cacheAsBitmap 设置将更改为它上次的"设置"。
在下列情况下,即使将 cacheAsBitmap 属性设置为 true,影片剪辑也不使用位图,而是从矢量数据呈现:
- 位图太大:在任一方向上大于 2880 像素。
- 位图内存分配失败(由于内存不足的错误)。
最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。对于这样的影片剪辑,在转换影片剪辑时(更改其 x 和 y 位置时),cacheAsBitmap 可以提高性能。
正如帮助中介绍的,我以为这个属性只是能够缓存矢量图型为位图,用来提高性能。
gotoandlearn的教程让我看到另一种可能性——alpha遮罩。这篇教程总结下来就是一句话:两个设置了cacheAsBitmap的MC在runtime(运行时)的setMask()是支持alpha的。cacheAsBitmap固然重要,可是少了runtime也不行。也就是说在编译的时候是看不到效果的,在Flash中设置遮罩层就不行。一定要用setMask()——runtime mask。
另一种实现alpha遮罩的方法是用层混合模式,不需要用到setMask(),但是比较繁琐一点:将遮罩MC和被遮罩的层一起放在一个外壳MC里面,外层MC的混合模式设为Layer,遮罩MC设为Alpha。重点是要有一个设置为Layer模式的MC作为容器,这点在做动画的时候会带来稍许不便。设置了Alpha模式的MC会对所有


