我所擁有的是一個具有靜態屬性的類,我想用它作爲圖像。我希望圖像在運行時可以配置,但仍然有默認值。因此,圖像類的樣子:Actionscript中的DataBinding
package {
public class Images {
[Embed(source="/assets/Green-Light.gif")]
[Bindable]
public static var GreenLight:Class;
}
}
現在的自定義組件:
package {
import mx.binding.utils.BindingUtils;
import mx.controls.Image;
import spark.components.HGroup;
public class MyComp extends HGroup {
private var _image:Image;
public function MyComp() {
_image = new Image();
_image.source = Images.GreenLight;
addElement(_image);
BindingUtils.bindSetter(setImageIcon, Images, "GreenLight");
}
private function setImageIcon(newIcon:Class):void {
trace(newIcon);
_image.source = newIcon;
}
}
}
現在,如果我創建這樣的應用程序:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
xmlns:ns1="*">
<fx:Script>
<![CDATA[
[Embed(source="/assets/Yellow-Light.gif")]
[Bindable]
public var YellowLight:Class;
]]>
</fx:Script>
<mx:Image source="{Images.GreenLight}"/>
<s:Button x="10"
y="40"
label="Button"
click="Images.GreenLight=YellowLight"/>
<ns1:MyComp x="40" y="0"/>
</s:Application>
點擊按鈕將變爲靜態Images類中的屬性改爲別的東西。在MXML中定義的圖像將獲取綁定事件並更新圖像,但在ActionSctipt中創建的自定義組件不會被更新。
我的問題是爲什麼?我該如何解決它?
謝謝!
這是我考慮的事情,但爲什麼它會在MXML中工作? – Ryan 2010-06-25 11:48:02
我編輯了答案,謝謝你的提問。 – 2010-06-25 12:27:13
我想讓它們變爲靜態的原因是,圖像可能會在運行時發生變化,並且變化會在應用程序的所有部分中反映出來。所以我想解決方案是讓它成爲一個單身人士。 – Ryan 2010-06-25 14:06:18