У меня есть класс со статическими свойствами, который я хочу использовать в качестве изображений. Я хотел бы, чтобы изображения были настраиваемыми во время выполнения, но все еще имели значения по умолчанию. Итак, класс Images выглядит так:
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, обновляться не будет.
Мой вопрос - почему? и как мне это исправить?
Спасибо!