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

Posted

技术标签:

【中文标题】在actionscript / Flex中将字符串转换为uint【英文标题】:Converting string to uint in actionscript / Flex 【发布时间】:2010-09-12 23:05:12 【问题描述】:

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

<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" />

当我编译时编译器抱怨:无法从文本“红色”中解析 uint 类型的值。但是,如果我使用普通标签,我可以这样做

&lt;mx:Label text="foobar" color="red"&gt;

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

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

谢谢。

【问题讨论】:

【参考方案1】:

颜色不是一种属性,它是一种风格。您需要像这样定义样式:

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

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

【讨论】:

【参考方案2】:

这是我的 2 个实用程序函数:

    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;  
         

【讨论】:

以上是关于在actionscript / Flex中将字符串转换为uint的主要内容,如果未能解决你的问题,请参考以下文章

如何在 flex 中将字符串数据类型转换为日期数据类型

Flex 库和 ActionScript 库有啥区别?

在 flex 中使用 Actionscript (MovieClip) 类

ActionScript 3 Flex在Facebook上分享

如何以正确的方式在 Actionscript 3 / Flex 3 中嵌入图像?

在 Flex/Actionscript 中捕获视频缩略图