在flex中创建自定义组件时使用图像

时间:2010-08-25 13:31:50

标签: actionscript-3 air flex4 custom-component

对于我的基于AIR的应用程序,我正在尝试基于具有图像的画布创建自定义组件(如下所示)。

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="100" cornerRadius="5" borderStyle="solid" borderThickness="2" dropShadowEnabled="true" borderColor="#EDEDE8" dropShadowColor="#dddddd" shadowDistance="5" shadowDirection="center">
<mx:Script>
    <![CDATA[
        public var path:String = "";
    ]]>
</mx:Script>
<mx:Image id="tileImage" maintainAspectRatio="false" buttonMode="true" useHandCursor="true" source="{path}" width="100%" x="0" height="100%" y="0"/>
<mx:Canvas left="3" top="3" bottom="3" right="3" borderStyle="solid" cornerRadius="5" borderThickness="1" borderColor="#EDEDE8" alpha="0.75">
</mx:Canvas>

我正在使用公共变量路径绑定图像源。当我尝试将此组件放在我的主mxml文件中,如下所示并提供“路径”时,我无法在自定义组件中看到任何图像加载。它仍然是空白。

var component:MyCustComponent = new MyCustComponent();
component.path = 'path/to/image.jpg';
addChild(component);

作为一种解决方法,我试图在我的自定义组件中向canvas添加一个creationComplete侦听器,并用于提供titleImage.source = this.path。这使它工作正常,但如果我不得不继续更改图像或使用某些异步调用获取图像的路径,它对我没有帮助。所以,我想知道是否有任何替代方法来解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:1)

看起来你只是缺少路径的可绑定元标记。为你的路径声明尝试:

[Bindable]
public var path:String;