总目录:http://blog.csdn.net/iloveas2014/article/details/38304477
1.2.5 colorTransform在色彩处理方面的不足
在以上的测试中,有些本来不同的颜色在经过colorTransform转换后变得出奇的一致,如果是想给图像做变色效果,这样的情况往往是我们想要避免的。此时,ColorTransform就显得有点心有余而力不足了。
归根到底,还是在于RGB模式在人类的视觉体验方面做得不够友好。
接下来,我们看看之前没测试过的alpha变换,理所当然的,之前的图像就不太适用了,因为图像里每个像素点的alpha都等于1。
1.2.6 Alpha测试用例的书写
把ShapeColorTransformTest复制为ShapeColorTransformTest,然后对代码进行如下调整:
首先把getTestSprite修改为:
//创建用于测试的显示对象
private function getTestSprite():Sprite{
var _f:Array = [new BlurFilter(80, 80)];
var _testSprite:Sprite = new Sprite();
/*添加两个圆,颜色分别为白和黑*/
_testSprite.addChild(new Circle(50, 0xFFFFFF, 100, 100)).filters = _f;
_testSprite.addChild(new Circle(50, 0xFFFFFF, 100, 250)).filters = _f;
return _testSprite;
}
而applyTransform函数则调整如下:
private function applyTransform():void{
_myColorTransform = _testSprite_dst.transform.colorTransform;
_myColorTransform.alphaMultiplier = 0;
_myColorTransform.alphaOffset = 127;
_testSprite_dst.transform.colorTransform = _myColorTransform;
}
运行效果如图 1.13所示。作者用了BlurFilter模糊滤镜生成了带两个透明渐变圆的Sprite,本来用透明渐变填充会更合理,但考虑到渐变代码比较复杂,这里还没介绍到,就先拿模糊滤镜凑合着用吧。
图 1.13 alpha测试用例
下面我们尝试一下alpha变换。