代码之家  ›  专栏  ›  技术社区  ›  mmattax

在actionscript/flex中将字符串转换为uint

  •  3
  • mmattax  · 技术社区  · 16 年前

    我正在创建一个组件,希望像许多flex控件那样公开一个颜色属性,假设我有这样的简单组件,我们称之为foo_标签:

    
    <mx:Canvas>
        <mx:Script>
            [Bindable] public var color:uint;
        </mx:Script>
        <mx:Label text="foobar" color="{color}" />
    </mx:Canvas>
    
    

    然后将组件添加到另一个MXML文件中,如下所示:

    
    <foo:foo_label color="red" />
    
    

    编译时编译器抱怨:无法从文本“red”中分析uint类型的值。但是,如果我使用一个简单的标签,我可以做到

    <mx:Label text="foobar" color="red">

    没有任何问题,并且color属性仍然是uint类型。

    我的问题是如何公开公共属性以便控制组件文本的颜色?为什么我可以使用字符串“red”作为MX控件的uint字段,但在自定义组件中似乎不能这样做,我需要做一些特殊的事情吗?

    谢谢。

    2 回复  |  直到 13 年前
        1
  •  8
  •   Borek Bernard    16 年前

    颜色不是属性,而是样式。您需要这样定义样式:

    [Style(name="labelColor", type="uint", format="Color" )]
    

    (如果直接在MXML中定义它,请将其括在标记中)。然后需要添加一些actionscript来处理此样式,并将其应用于所需的任何控件,请参阅 http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html 更多信息。

        2
  •  2
  •   theaibo    13 年前

    下面是我的两个utils函数:

        public static function convertUintToString( color:uint ):String {  
                return color.toString(16);  
        }  
    
        public static function convertStringToUint(value:String, mask:String):uint {  
                var colorString:String = "0x" + value;  
                var colorUint:uint = mx.core.Singleton.getInstance("mx.styles::IStyleManager2").getColorName( colorString );  
    
                return colorUint;  
        }