动态更改嵌入源类

时间:2012-12-02 08:24:42

标签: actionscript-3 flash flex actionscript flex3

我正在开发一个Flex应用程序,我需要动态更新一个按钮图标源,但是,通过在运行时将icon属性更改为另一个Class变量对我来说还不够,我需要明确地将Class源更改为另一个。我对谷歌表示怀疑但尚无答案。

我想要以下内容: http://www.java2s.com/Code/Flex/Graphics/ChangeImagesourceinbuttonaction.htm

但是我需要它来做这样的事情:

[Embed(source="sun.jpg")]
[Bindable]
private var dayAsset:Class;

private function init(  ):void {
    dayImage.source = dayAsset;
}

private function showMoon(  ):void {
    dayAsset.source = "moon.jpg";
}

private function showSun(  ):void {
    dayAsset.source = "sun.jpg";
}

我尝试了以前的代码但没有成功。

为什么我需要以这种方式更新“dayImage”图像源?因为我在多个位置引用了图像,我需要在触发事件时更新所有图像

任何解决方案:P或评论将不胜感激。

感谢。祝你有个美好的夜晚。

1 个答案:

答案 0 :(得分:0)

如果我理解这个问题;那么答案是你无法在运行时更改嵌入。它们在编译时执行;并成为您编译的SWF的一部分。

你很可能想要这样做:

// embed both images
[Embed(source="sun.jpg")]
[Bindable]
private var dayAssetSun:Class;

[Embed(source="moon.jpg")]
[Bindable]
private var dayAssetMoon:Class;

// us a variable to store the reference to the image you want to see
private var currentDayAsset :Class;

// set the current asset
private function init(  ):void {
    dayImage.source = currentDayAsset;
}

// these methods change the currentDayAsset variable; but do not affect the embeds
private function showMoon(  ):void {
    currentDayAsset =  dayAssetMoon;
}

private function showSun(  ):void {
    currentDayAsset =  dayAssetSun;
}