首页 > 网站 > WEB开发 > 正文

9.8.自定义组件样式属性

2024-04-27 13:52:07
字体:
来源:转载
供稿:网友
9.8.1.问题
你想嵌入地创造并展现那些组件中本身没有的自定义样式属性。
9.8.2.解决办法
给你的自定义组件增加样式元数据并用getStyle 方法返回属性值。
9.8.3.讨论
Flex 框架为组件提供了可用的默认样式属性,但你能利用[Style] 元数据标记为自定义组件声明附加样式属性。在<mx:Metadata>标记中列出样式定义使得你在MXML 中组件声明内嵌入地指定属性值。你同样能利用CSS 和setStyle 方法为自定义组件声明样式属性值。同设定默认属性值一样,所有的这些方法强制更新显示界面。

为自定义组件增添附加样式属性使得你能规定影响组件视觉构成的属性。下例中的自定义组件是mx.containers.Box 类的子类,并在<mx:Metadata>标记中列出了用于自定义显示的自定义样式:
+展开
-XML
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxmlwidth="100%height="100%"
horizontalAlign="centerverticalAlign="middlecreationComplete="creationHandler();">

<mx:Metadata>
[Style(name="teeterAngle", type="Number")]
[Style(name="activeColor", type="uint", format="Color")]
[Style(name="idleColor", type="uint", format="Color")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import mx.effects.easing.Bounce;
[Embed("assets/fonts/verdana.TTF", fontName="MyFont")]
public var verdana_font:Class;
private function creationHandler():void { playAnim(); }
private function effectStartHandler():void {
holder.setStyle( "backgroundColor",getStyle( "activeColor") );
holder.enabled = false;
field.text = "Wheeeee!";
}
private function effectEndHandler():void {
holder.setStyle( "backgroundColor",getStyle( "idleColor") );
holder.enabled = true;
field.text = "Again! Click Me";
}
private function playAnim():void { rotater.play( [this], true);
}

]]>
</mx:Script>
<mx:Rotate id="rotater"
effectStart="effectStartHandler();"
effectEnd="effectEndHandler();"
originX="{width}originY="{height}"
angleFrom="0angleTo="{getStyle('teeterAngle')}"
easingFunction="{Bounce.easeIn}duration="500"/>

<mx:VBox id="holderwidth="60%height="60%horizontalAlign="centerverticalAlign="middleclick="playAnim();">
<mx:Text id="fieldwidth="100%selectable="falsefontFamily="MyFont"/>
</mx:VBox>
</mx:Box>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表