在运行时更改图像源

时间:2010-02-16 12:31:01

标签: flex

我想在点击事件中更改图像。我在点击时更改图像的来源,但是当任何其他事件被触发时它立刻就不会反映出来。为什么会这样,任何人都有解决方案?

3 个答案:

答案 0 :(得分:2)

如果您将源设置为网址(例如image.source = "/assets/myimage.jpg"),那么加载图片可能需要1+帧,因为它正在进行异步URLRequest,因此更改不会立即注册。在这种情况下,拨打validateNow()无济于事。

如果您需要立即加载,请嵌入图像(如果它们足够小)或一次加载一些图像并将它们存储在某处,并将图像源设置为位图(类似{{ 1}})。

希望有所帮助, 兰斯

答案 1 :(得分:1)

设置image.validateNow()后立即致电source以强制更改。

答案 2 :(得分:1)

尝试一个简单的技巧。只需添加两个图像组件,一个可见性为true,另一个可见性为false。点击事件后,只需更改图像组件的可见性。您将获得所需的结果。

这是演示,希望你会喜欢这个。

<fx:Script>
        <![CDATA[

private var isPause:Boolean=false;

protected function music_control1(event:MouseEvent):void
            {
                if(!isPause)
                {
                    pos =_channel.position;
                    isPause=true;
                    SoundMixer.stopAll();
                    music2.visible=true;
                    music.visible=false;
                }
                else
                {
                    music.enabled=true;
                    _channel=_sound.play();
                    isPause=false;
                    music2.visible=false;
                    music.visible=true;
                }

            }
]]>
    </fx:Script>


    <s:Image id="music" x="200" y="245" click="music_control1(event)"
                     source="@Embed('assets/pause.png')"/>      
            <s:Image id="music2" x="200" y="245" click="music_control1(event)" visible="false"
                     source="@Embed('assets/play.png')"/>