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

mma*_*tax 3 apache-flex actionscript actionscript-3

我正在创建一个组件,并希望像许多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" />

当我编译编译器抱怨:无法从文本'red'解析类型uint的值.但是,如果我使用普通标签,我可以做

<mx:Label text="foobar" color="red">
Run Code Online (Sandbox Code Playgroud)

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

我的问题是我如何公开一个公共财产,以便我可以控制我的组件文本的颜色?为什么我可以使用字符串"red"作为mx控件的uint字段,但在自定义组件中似乎无法做同样的事情,我是否需要做一些特别的事情?

谢谢.

Bor*_*ard 8

颜色不是属性,它是一种风格.你需要定义这样的样式:

[Style(name="labelColor", type="uint", format="Color" )]
Run Code Online (Sandbox Code Playgroud)

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