0

Flex 4 で最初のアニメーション効果を作成しました。カスタム コンポーネント内の非常に単純なアニメーションで、ラベル コンポーネントを左から右から左に 3 ~ 5 回移動し、徐々にフェードアウトします。

すべてが正常に機能しますが、問題は、アニメーションを初めて実行すると、ぎくしゃくしたアニメーションが再生され、病棟の後に完全にスムーズになることです。どうしてか分かりません。

誰かがこれの何が悪いのか教えてもらえますか?

これは、私のカスタム コンポーネントの完全なソース コードです。ステージに追加した後、showProgressEffect() を呼び出すと、アニメーションが再生されます。

ラベルを移動する際のちらつきを避けるためにラベル「cacheAsBitmap」を作成し、各アニメーション/エフェクトの play() メソッドの前に stop() を呼び出していることに注意してください。

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" width="274" height="72"
         click="onClick()" xmlns:components="ui.hud.components.*" cacheAsBitmap="true">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:Sequence id="tween" repeatCount="5" effectEnd="onEffectEnd()" >
            <s:Move xBy="20" duration="500" />
            <s:Move xBy="-20" duration="500" xFrom="50"/>
        </s:Sequence>
        <s:Fade id="fadeEffect" alphaTo="0" duration="2000" />
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            [Bindable]
            public var questId:int;
            [Bindable]
            public var questTitle:String;
            [Bindable]
            public var iconUrl:String;

            private function onClick():void{

                Globals.questCtr.showQuest(questId);

            }
            private function onEffectEnd():void{

                fadeEffect.stop();
                fadeEffect.play([lblStatus]);
            }

            public function showProgressEffect():void{

                tween.stop();
                lblStatus.alpha = 1;
                tween.play([lblStatus]);
            }

        ]]>
    </fx:Script>

    <mx:Image source="{iconUrl}" width="75" height="75"/>
    <s:Group x="77" y="24" width="197">
        <s:Label id="lblStatus" text="Task Complete" fontWeight="bold" fontSize="25" alpha="0" cacheAsBitmap="true" hideEffect="" mouseEnabled="false"/>        
    </s:Group>

</s:Group>
4

1 に答える 1

0

これは、アニメーションの開始前とその後のラベルの位置が異なるために発生します。あなたが何を達成しようとしているのか正確にはわかりませんが、2つの選択肢があります。

  • 2手目効果にxFrom="50"変更できます。xFrom="20"
  • lblStatusx 座標を 30 に変更できます。
于 2012-05-25T08:34:10.067 に答える