首页 > 代码库 > 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里制作的投影等高线有几分相似了!


      当各种参数可以颠覆传统,当发光不再只是发光,当事物超出了人类所能认知的范围,当量变发展到一定程度的时候,一切会何去何从?事物将会突破极限,实现质的飞跃!而这种飞跃往往非常人所能理解,我们谓之“奇葩”!


      下面,就让我们进入下一节,共同迈进这个奇葩朵朵开的世界!