0

Flexで簡単な効果を作成しましたが、以下のコードで正しく実行されません...アイコンをロールオーバーすると、ほとんどの場合、効果が再生され、画像をロールアウトすると、効果が逆に再生されます。しかし、めったにありません...

私のコードまたはロジックは正しくありませんか?参考までに-私はFlashBuilder4.6を使用しています。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:Move id="detail_fade" target="{detail_panel}" xFrom="218" xTo="400" />
    </fx:Declarations>

    <s:Panel id="detail_panel" x="218" y="10" width="728" height="580" title="something">
    </s:Panel>

    <s:VGroup x="7" y="5" width="200" height="200">
        <s:Image source="images/Airfield Icon.jpg"
            rollOver="detail_fade.play()" rollOut="detail_fade.reverse()"/>
</s:VGroup>

4

1 に答える 1

0

Mahesh がコメントで指摘したように、reverse()実際に再生されている効果を反転させるだけです。そのため、効果が終了する前にロールアウトするのに十分な速さがある場合など、時々発生するだけです。

代わりに次を使用する必要があります。

detail_fade.play(null, true);

メソッドの最初の引数は、playエフェクトのターゲットの配列です。すでにターゲットを指定しているため、再度渡す必要はありません (そのため、 と表示されますnull)。
2 番目の引数は、 に設定されている場合、効果を逆方向に再生するように指示するブール値trueです。もちろんfalseデフォルトです。


ここで、ロールアウトをすばやく行うと、エフェクトが最後までジャンプし、そこから別の方向に再生を開始することに気付くかもしれません。

これは次のように修正できます。

if (detail_fade.isPlaying) detail_fade.reverse();
else detail_fade.play(null, true);
于 2012-10-05T14:24:29.630 に答える