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

时间:2020-03-06 14:42:00  来源:igfitidea点击:

我正在创建一个组件,并希望像许多flex控件一样公开color属性,可以说我有一个像这样的简单组件,可以称之为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">

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

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

谢谢。

解决方案

颜色不是属性,而是样式。我们需要定义如下样式:

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

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