0

我有下一个显示图像的代码,当鼠标悬停时更改它。

  <mx:Image source="{ConfigApp.getResourcesPath()}/img.jpg" id="imgOne"   
  mouseOver="imgOne.source=ConfigApp.getResourcesPath()+'/img_over.jpg'"
  mouseOut="imgOne.source=ConfigApp.getResourcesPath()+'/img.jpg'"/>

我有两个问题:

第一:如果我用鼠标快速通过图像,有时图像状态为 mouseOver 图像(不检测 mouseOut 事件)。

第二:鼠标经过的瞬间,有几毫秒的时间没有图像,所以每次鼠标经过时,它看起来就像一个白色的闪光。

4

2 回答 2

4

第二个问题:每次都加载图像,在远程连接时这个闪光灯会变得更糟。相反,将图像放入一个类中并切换类引用。

[Embed(source="/assets/imageOver.png")]
public static const overImage:Class;
[Embed(source="/assets/img.png")]
public static const image:Class;

然后像这样切换它们...

<mx:Image source="{image}" id="imgOne"   
  mouseOver="imgOne.source=overImage"
  mouseOut="imgOne.source=image"/>
于 2011-08-10T14:24:51.620 回答
1

我宁愿做这样的事情,它解决了所有问题:

[Bindable] public var isOurMouse:Boolean = false;

<mx:Canvas>
    <mx:Image source="{ConfigApp.getResourcesPath()}/img.jpg"
        mouseOver="isOurMouse = true"
        mouseOut="isOurMouse = false"/>
    <mx:Image source="{ConfigApp.getResourcesPath()}/img_over.jpg"
        mouseEnabled="false" mouseChildren="false"
        visible="{isOurMouse}"/>
</mx:Canvas>

至此,如果您希望图像在重新加载时不闪烁,您应该有两张图像,一张在另一张上,其中背景一张仅在前景一张完成加载后才会重新加载。实际上,您的图像闪烁,但您看不到它:

<mx:Canvas>
    <mx:Image id="imgBkg"/>
    <mx:Image id="imgFrg"
        source="{something}"
        complete="imgBkg.source = imgFrg.source"/>
</mx:Canvas>
于 2011-08-11T07:00:57.880 回答