锁定老帖子 主题:Flex中给对象加阴影的方法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-24
Flex中给对象加阴影的方法 1、 BorderContainer、Panel等容器自带阴影 BorderContainer或者Panel等容器自带了阴影,这通过dropShadowVisible样式设定,此样式如果设为true,则显示阴影。BorderContainer的dropShadowVisible默认为false,Panel 的默认为true。 Panel的阴影效果如下:
2、 RectangularDropShadow专用来为矩形对象加阴影,如果对象是矩形,使用此类效率高 可以在程序中直接使用RectangularDropShadow为对象加阴影,但仅适用于对象外形是矩形的条件下。示例如下: <s:Group x="302" y="62" width="217" height="200"> <s:RectangularDropShadow blurX="20" blurY="20" alpha="0.32" distance="11" blRadius="5" brRadius="5" angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/> </s:Group> 效果如下:
3、 SkinnableContainer可以通过皮肤加阴影 可以为SkinnableContainer建一个皮肤类,在类中设置阴影,代码如下: <s:SkinnableContainer x="575" y="62" width="200" height="200" skinClass="MySkinableContainerWithShadowSkin"> </s:SkinnableContainer> 皮肤中的阴影程序为: <!-- 通过RectangularDropShadow加阴影 --> <s:RectangularDropShadow id="dropShadow" blurX="20" blurY="20" alpha="0.32" distance="11" blRadius="5" brRadius="5" angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/> 这样的好处是阴影将不响应该对象的鼠标事件。
4、 如果对象外形不是矩形,就要使用DropShadowFilter滤镜 示例: 首先是滤镜的定义: <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <fx:Array id="myFilters"> <s:DropShadowFilter alpha="0.32" distance="11" blurX="20" blurY="20" angle="90" color="#000000" > </s:DropShadowFilter> </fx:Array> </fx:Declarations> <s:Group x="297" y="339"> <!--下面是要显示阴影的组件:à <s:Path data="M 195.307 95.719 C 195.307 103.702 206.101 113.422 204.132 120.785 C 202.096 128.404 204.87 141.279 201.011 147.949 C 197.097 154.715 171.372 145.538 165.881 151.029 C 160.39 156.52 158.618 163.32 151.852 167.234 C 145.182 171.093 146.125 197.982 138.507 200.019 C 131.145 201.986 118.555 196.832 110.571 196.832 C 102.588 196.832 88.935 205.962 81.572 203.993 C 73.954 201.957 63.453 192.709 56.783 188.851 C 50.017 184.936 47.379 169.893 41.888 164.401 C 36.397 158.911 56.453 135.965 52.538 129.199 C 48.679 122.529 40.694 122.617 38.658 114.999 C 36.69 107.636 0 103.702 0 95.719 C 0 87.736 10.102 76.695 12.07 69.332 C 14.106 61.714 27.476 56.64 31.334 49.97 C 35.249 43.204 53.419 49.549 58.91 44.058 C 64.401 38.567 53.156 11.925 59.923 8.01 C 66.593 4.151 77.68 3.416 85.298 1.38 C 92.661 -0.588 102.588 0.133 110.571 0.133 C 118.555 0.133 123.642 17.522 131.005 19.489 C 138.624 21.526 143.709 22.891 150.379 26.751 C 157.145 30.665 166.349 28.961 171.839 34.452 C 177.331 39.943 169.701 52.574 173.615 59.34 C 177.475 66.01 187.039 67.06 189.075 74.678 C 191.044 82.041 195.307 87.736 195.307 95.719 Z" winding="nonZero" x="0.929" y="0.781" filters="{myFilters}" width="175.40123" height="172.30193"> <s:stroke> <s:SolidColorStroke caps="none" color="#5380D0" joints="miter" miterLimit="4" weight="1"/> </s:stroke> <s:fill> <s:SolidColor color="#FFFFFF"/> </s:fill> </s:Path> </s:Group> 此代码通过Path定义了一个不规则区域,通过DropShadowFilter滤镜添加了阴影。 效果如下:
总结: 总结起来就是两个东西,一个是RectangularDropShadow,一个是DropShadowFilter。RectangularDropShadow为矩形对象添加阴影,DropShadowFilter可以为任意形状对象添加阴影。 BorderContainer和Panel等容器使用的就是RectangularDropShadow。
屈剑峰 2011年11月24日 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 3608 次