Flex4中的皮肤(3):使用组件数据

 

        分类:            1810人阅读 评论(1) 收藏 举报

前面说了如何自定义SkinnableComponent以及 定义State

在Skin中还可以引用Component中的数据。

首先在Node中增加属性tokenCount:

[javascript] view plain copy print ?
  1. private var _tokenCount:int
  2.         [Bindable("tokenChange")] 
  3.         public function get tokenCount():int 
  4.         { 
  5.             return _tokenCount; 
  6.         } 
  7.          
  8.         public function set tokenCount(value:int):void 
  9.         { 
  10.             _tokenCount = value; 
  11.         } 

在Skin中,需要先指定HostComponent:

  1. <fx:Metadata> 
  2.    [HostComponent("skinsample.Node")] 
  3. </fx:Metadata> 

这样就可以在需要的地方引用组件的属性了:

<s:SimpleText text="{hostComponent.tokenCount}".../>

代码如下:

TransitionSkin.mxml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" width="400" height="300"> 
  3.     <fx:Metadata> 
  4.        [HostComponent("skinsample.Node")] 
  5.     </fx:Metadata> 
  6.     <s:states> 
  7.         <s:State name="normal" /> 
  8.         <s:State name="enable" /> 
  9.     </s:states> 
  10.     <s:Rect id="rect" radiusX="4" radiusY="4" top="0" right="0"  
  11.          bottom="0" left="0"> 
  12.         <s:fill> 
  13.            <s:SolidColor color="0x131313" color.enable="0xff0000" /> 
  14.         </s:fill> 
  15.         <s:stroke> 
  16.            <s:SolidColorStroke color="0x131313" weight="2"/>            
  17.         </s:stroke> 
  18.     </s:Rect> 
  19.     <!-- text --> 
  20.     <s:SimpleText text="{hostComponent.tokenCount}" color="0x131313" color.normal="0xffffff" 
  21.             textAlign="center" 
  22.             verticalAlign="middle" 
  23.             horizontalCenter="0" verticalCenter="0"             
  24.      /> 
  25.     <s:Button top="0" right="0" bottom="0" left="0" alpha="0" includeIn="enable,normal"/> 
  26. </s:Skin> 

NodeSample.mxml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" xmlns:skinsample="skinsample.*"> 
  3.     <fx:Script> 
  4.         <!--[CDATA[ 
  5.             import skinsample.TransitionSkin; 
  6.         ]]--> 
  7.     </fx:Script> 
  8.     <skinsample:Node skinClass="skinsample.TransitionSkin" x="10" y="30" width="50" height="50" tokenCount="5"/> 
  9.     <skinsample:Node skinClass="skinsample.PlaceSkin" x="80" y="30" width="50" height="50"/> 
  10.     <skinsample:Node skinClass="skinsample.TransitionSkin" x="150" y="30" width="50" height="50" isEnabled="true" tokenCount="2"/> 
  11.      
  12. </s:WindowedApplication> 

转自:http://blog.csdn.net/thinkinside/article/details/4635138

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值