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

私には2つの問題があります:

1つ目:マウスを画像の上に置いて速く通過すると、mouseOver画像で画像の状態になることがあります(mouseOutイベントを検出しません)。

2番目:マウスが上にある瞬間に、画像がない数ミリ秒があるため、マウスが上にあるたびに白いフラッシュのように見えます。

4

2 に答える 2

4

2 番目の問題: 毎回イメージをロードするため、このフラッシュはリモート接続時に悪化します。代わりに、クラス内のイメージをキャッシュして、クラス参照を切り替えます。

[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>

要するに、リロード時に画像が点滅しないようにする場合は、2 つの画像を重ねて配置し、前景の画像の読み込みが完了した後にのみ、背景の画像をリロードする必要があります。実際には、画像が点滅しますが、表示されません。

<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 に答える