[原创]ActionScript3游戏中的图像编程(连载十二)
总目录:http://www.cnblogs.com/iloveas/p/3879125.html
1.2.7 线性提高或降低alpha值
提高alpha(图 1.14):_myColorTransform.alphaOffset = 100;
降低alpha值(图 1.15):_myColorTransform.alphaOffset = -100;
图 1.14 线性提高alpha
图 1.15 线性降低alpha
粗略一看,它跟设置alpha似乎没什么两样,但仔细观察就会发现,当alphaOffset提高的时候,周边比较透明的像素渐渐地淡入到1,相反,降低的时候,周边会慢慢地淡出到0。所以,虽然仅仅是一个简单的线性变换,但是拿来做光圈或者黑洞的扩散或者收缩效果将会相当不错。
下面,我们做个直接设置alpha的版本来对照下效果。
1.2.8 设置alpha值
_myColorTransform.alphaMultiplier = 0.7; (图 1.16)
注意到设置alpha跟设置颜色不同,它要在原有像素的基础上设置倍率才符合alpha的概念,效果才跟设置displayObject.alpha一致。
_myColorTransform.alphaMultiplier = 1.5; (图 1.17)
图 1.16 倍乘降低alpha
图 1.17 倍乘提高alpha
可以看出,alpha的变换呈现为整体性,因此没有扩散收缩的效果,如果您有跟着我一起测试的话,就不妨用补间引擎或者EnterFrame来测试两种效果过渡的差别。作者认为alphaOffset的效果要比multiplier漂亮多了。
如果像设置颜色那样,把multiplier弄成0,像素点的透明度就统一起来了。这个效果虽然不甚美观,但是很适合用来做一些图像的预处理工作。
代码如下:
1 _myColorTransform.alphaMultiplier = 0; 2 _myColorTransform.alphaOffset = 127;
效果如图 1.18所示。
图 1.18 让每个像素点的alpha相等
在alpha通道方面,ColorTransform没让咱们失望,毕竟它独立于色彩模式,而且只有一个值,运算的处理也相对容易把握一些。