首页 > 代码库 > ActionScript3游戏中的图像编程(连载四十八)
ActionScript3游戏中的图像编程(连载四十八)
总目录:http://blog.csdn.net/iloveas2014/article/details/38304477
3.1.4 简单滤镜中的渐变原理探讨
我们再简单的看一下滤镜里的渐变条。
为了尽可能地减少复杂的文字轮廓所造成的干扰,我再次使用方块进行试验。
我画了一个紫色的方块(啥颜色其实都无所谓了),然后添加渐变发光滤镜,把模糊和距离值都调大,以便看清楚渐变的轮廓,然后给渐变条随意地加上几种颜色(图 3.30)
图 3.30 模糊范围较大的渐变发光
可以看到,渐变条上的色彩从右往左地沿着滤镜层的轮廓向外扩散,直到淡出舞台。在渐变作用范围以外的区域(即图形的内部)都全部使用最右侧的颜色,那么我们要如何确定渐变的作用范围呢?
笔者想到了一个不太精确的做法:在尽可能靠近右侧的边缘多加一种颜色。(图 3.31)
图 3.31 最右侧的渐变点实际上有两个颜色滑块
借助这样的一个点,我们就可以比较准确地测出渐变轮廓的粗细了。经测试,图 3.31中的两紫色横线之间的距离很接近40像素(误差在1像素以内)。
读者可以自行测试其他像素下的效果,也可以尝试让模糊X和模糊Y的值不一致,如图 3.32。
图 3.32 模糊X不等于模糊Y的情况
在模糊值不超出方块尺寸的前提下,渐变区的大小跟模糊值基本一致,误差均小于1像素。
另一个可以证明该结论的极端情况:当模糊值设置为0的时候,渐变区全部被挤到了最外层一条宽度不足1像素的细线框上(图 3.33)
图 3.33 模糊值为0时,所有渐变色都被挤到了边缘,几乎不可见
另外,强度也具有控制渐变区域大小的作用,知道发光是渐变发光的特例以后,这一点就不难理解了。
我的这个渐变发光里,光圈从内而外呈现出一个淡出的趋势,这一趋势是必然的吗?当然不是!向外淡出仅仅是它的默认设置,也是发光,投影滤镜中用到的特例,我们完全可以打破这一常规!比如,把各种颜色的不透明度都改到100%。(最左侧的条虽然不能更改透明度(图 3.34),但我们可以用之前说到的那个方法——尽可能地在靠近左侧的位置上添加一个渐变点来完成这一操作)(图 3.35)
图 3.34 发光最外层的透明度不允许更改
图 3.35 用霸王硬上弓的办法让光圈的外边缘不淡出
已经没有模糊的感觉了,因为我把最外侧的边缘也设置成了全不透明。实际上,Flash滤镜(模糊滤镜除外)里的模糊参数所控制的就是渐变有效区的大小,当不透明度遵循从有到0的规则进行渐变时,渐变有效区的变大就可以让观众产生模糊的错觉了。
大概是由于最外围设置成不透明以后,边缘有点生硬,所以Flash IDE不允许我们更改光圈最外层的不透明度。
我们甚至可以把透明度翻转过来,做出一个带有浮雕感的立体字(图 3.36)
图 3.36 用渐变发光实现浮雕效果
是不是有种似曾相识的感觉?没错,这跟我们当时在Photoshop里制作的投影等高线有几分相似了!
当各种参数可以颠覆传统,当发光不再只是发光,当事物超出了人类所能认知的范围,当量变发展到一定程度的时候,一切会何去何从?事物将会突破极限,实现质的飞跃!而这种飞跃往往非常人所能理解,我们谓之“奇葩”!
下面,就让我们进入下一节,共同迈进这个奇葩朵朵开的世界!