2011-03-06 31 views
0

我在我的flex應用程序中有一個基本的鼠標懸停,它改變了圖像onmouseover,並使用代碼mouseOver="functionToChangeImageSource()"將其更改回到鼠標懸停狀態,另一個鼠標懸停在鼠標懸停狀態。Flex 4在mouseover上更改圖像 - 當鼠標懸停快時,mouseout功能失敗?

它可以正常工作,當你慢慢地將鼠標懸停在外,但是如果我快速將鼠標移動到它上面,它偶爾會停留在鼠標懸停的圖像上,並且鼠標懸停功能似乎不會啓動。是否有任何事情可以修復這個,還是沒有人有任何想法,爲什麼它的發生?

此外,我已經嘗試了rollOver和rollOut,但它有相同的問題。

代碼如下(我切換它隱藏和鼠標懸停顯示兩個圖像輸入/輸出,看它是否解決了這個問題,但它沒有):

 <mx:Image source="images/logout.jpg" 
       left="0" 
       top="350" 
       top.dataViewState="470" 
       id="logoutimg" 
       includeIn="dataViewState, dataDayViewState" 
       rollOver="logoutimg_mouseOverHandler(event)" 
       click="doLogout()" 
       /> 

    <mx:Image source="images/logoutover.jpg" 
       left="0" 
       top="350" 
       top.dataViewState="470" 
       id="logoutoverimg" 
       includeIn="dataViewState, dataDayViewState" 
       rollOut="logoutoverimg_mouseOutHandler(event)" 
       visible="false" 
       click="doLogout()" /> 

而且功能如下:

protected function logoutimg_mouseOverHandler(event:MouseEvent):void 
     { 
      logoutimg.visible = false; 
      logoutoverimg.visible = true; 
     } 


     protected function logoutoverimg_mouseOutHandler(event:MouseEvent):void 
     { 
      logoutoverimg.visible = false; 
      logoutimg.visible = true; 
     } 

我想你是正確的mouseover事件沒有完成之前mouseout是,但如何解決這個問題?

+0

向我們展示您的代碼和/或指向正在運行的樣本的鏈接。在「鼠標進入」操作完成之前,您最有可能將鼠標移出。 – JeffryHouser 2011-03-06 23:04:58

+0

查看帶有代碼的更新編輯 - 謝謝。 – Taro 2011-03-06 23:48:42

回答

1

我猜這是一個問題,可以採取處理程序在超出/取決於快速切換可見性的速度。

但這裏的主要問題是你做錯了。

你並不需要2個圖像,只是有一個形象,並更改源屬性:

<mx:Image source="images/logout.jpg" 
     left="0" 
     top="350" 
     top.dataViewState="470" 
     id="logoutimg" 
     includeIn="dataViewState, dataDayViewState" 
     rollOver="logoutimg_mouseOverHandler(event)" 
     rollOut="logoutoverimg_mouseOutHandler(event)" 
     click="doLogout()" 
     /> 



    protected function logoutimg_mouseOverHandler(event:MouseEvent):void 
{ 
    logoutimg.source="images/logoutover.jpg"; 
} 


protected function logoutoverimg_mouseOutHandler(event:MouseEvent):void 
{ 
    logoutimg.source="images/logout.jpg"; 
} 

編輯:如果你看到的閃爍,嘗試embed syntax。你也可以用Flex Css和懸停屬性來做到這一點(不需要代碼)。

3

你最好使用這一行代碼

<mx:Image source="images/logout.jpg" 
      left="0" 
      top="350" 
      top.dataViewState="470" 
      id="logoutimg" 
      includeIn="dataViewState, dataDayViewState" 
      rollOver="event.currentTarget.source = 'images/logoutover.jpg'" 
      rollOut="event.currentTarget.source = 'images/logout.jpg'" 
      click="doLogout()" 
      /> 
1

我們最近遇到了同樣的問題,唯一的真正的解決方案似乎是一個按鈕,改變其高達更換圖片,請向下,覆蓋並禁用皮膚以嵌入版本的圖像。

0

如果您只使用mouseUpmouseDown,您將遇到的唯一問題是用戶在圖像上單擊鼠標時,如果鼠標仍然向下,則將鼠標移離圖像。在這種情況下,圖像保留在mouseDown版本中。爲了解決這個問題,你還需要包含一個rollOut條件,以恢復到mouseUp圖像。現在,所有的基地都被覆蓋了。

相關問題