在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 类型的值。但是,如果我使用普通标签,我可以这样做
<mx:Label text="foobar" color="red">
没有任何问题,并且颜色属性仍然是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 中使用 Actionscript (MovieClip) 类
ActionScript 3 Flex在Facebook上分享