Flash Player 8 新增的混合模式功能中的图层模式 (Layer)
一般使用起来或许觉得没有什么特别的用处
说明文档上写得更是令人雾茫茫
简单的说,只是让 DisplayObject 子对象预先混和颜色而已
基本上,除了 Normal 之外的混合模式,都会强迫预先混和子对象颜色
但是其它混合模式都是有特殊效果的
假如不需要那些效果,但是又要强迫预先混合颜色时
就要用 Layer 混合模式了
对于像是 Flex 这样由大量的 DisplayObject 组合而成的组件
遇到需要淡入、淡出效果时
即使是在最外层设置 Alpha 透明度
每个子对象仍会先被单独套用 Alpha 效果再叠合成一张图
这样就会有某些位置颜色特别突兀不透明
它可以让整个表单先叠合成一张图再进行 Alpha 效果
可以确保组件颜色看起来不会特别突兀
以下是用 Flex 作的简单测试
可以容易观察到多层嵌套组件在不同 Alpha, BlendMode 的效果
<?xml version="1.0"?>
<mx:Application layout="vertical" fontSize="12" backgroundColor="#FFFFFF"
xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Style>
HBox.whiteBox {
paddingTop: 15px;
paddingBottom: 15px;
paddingLeft: 15px;
paddingRight: 15px;
backgroundColor: #000000;
}
</mx:Style>
<mx:HBox styleName="whiteBox" alpha="{alphaSlider.value}"
blendMode="{blendModeCb.value ? blendModeCb.value : 'normal'}">
<mx:HBox styleName="whiteBox">
<mx:HBox styleName="whiteBox">
<mx:HBox styleName="whiteBox" />
</mx:HBox>
</mx:HBox>
</mx:HBox>
<mx:HRule width="100%" />
<mx:HBox verticalAlign="middle">
<mx:Label text="BlendMode: " />
<mx:ComboBox id="blendModeCb">
<mx:dataProvider>
["normal", "layer", "darken", "invert", "hardlight"]
</mx:dataProvider>
</mx:ComboBox>
</mx:HBox>
<mx:HBox verticalAlign="middle">
<mx:Label text="Alpha: " />
<mx:HSlider id="alphaSlider" value="0.5"
tickValues="[0, 0.5, 1]" labels="[0, 0.5, 1]"
minimum="0" maximum="1" liveDragging="true" />
</mx:HBox>
</mx:Application>
<!-- Ticore's Blog - http://ticore.blogspot.com/ -->
线上测示示范:
Read more...









