2010-02-16 83 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')"/>