[原创]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没让咱们失望,毕竟它独立于色彩模式,而且只有一个值,运算的处理也相对容易把握一些。

原文地址:https://www.cnblogs.com/iloveas/p/3888488.html