2010-02-16 100 views
2

我想在點擊事件中更改圖像。我在點擊時更改圖像的來源,但在任何其他事件被觸發時它不會立即反映出來。爲什麼是這樣,並且任何人都有解??在運行時更改圖像源

回答

1

source設置爲立即強制更改後,致電image.validateNow()

2

如果您將源設置爲url(例如image.source = "/assets/myimage.jpg"),則它可能需要1+幀才能加載圖像,因爲它正在生成異步URLRequest,因此更改不會立即進行註冊。在這種情況下調用validateNow()將無濟於事。

如果您需要立即加載圖像(如果它們足夠小)或一次加載其中的一些圖像並將它們存儲在某處,並將圖像源設置爲位圖(類似於image.source = myImageCache.getBitmap(0); )。

希望幫助, 蘭斯

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')"/>