我想在点击事件中更改图像。我在点击时更改图像的来源,但是当任何其他事件被触发时它立刻就不会反映出来。为什么会这样,任何人都有解决方案?
答案 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')"/>