2011-07-10 10 views
0

ページの読み込み中にイメージを連続的に回転させたいとします。コードは1ページローディングで正常に動作しますが、同じ効果を継続的に達成するために、.play()ステートメントを以下に示す無限whileループに含めました。しかし、ページがハングして何も表示されません。イメージを連続的に回転する

while (i == 1) 
{ 
    if (rotEff.isPlaying != true) 
    { 
     rotEff.play(); 
    } 
} 

答えて

5

それが無限に繰り返されるように、0にあなたのEffectオブジェクトのrepeatCountプロパティを設定してみてください:

<fx:Declarations> 
    <s:Rotate id="rotate" target="{image}" angleBy="360" duration="1000" repeatCount="0" autoCenterTransform="true"></s:Rotate> 
</fx:Declarations> 

[UPDATE]

砂さんのコメントへの返信

おかげでtaurayi ...設定repeatCountは問題を解決しました。しかし、そこには は少しのトランジットです1つの完全な360ラウンドから までのイオンラグもう1つのラウンド。これも取り除くことが可能ですか?

そうのようにnullにeaserプロパティを設定します。

<fx:Declarations> 
    <s:Rotate id="rotate" target="{image}" angleBy="360" duration="1000" repeatCount="0" autoCenterTransform="true" easer="{null}"></s:Rotate> 
</fx:Declarations> 
+0

ありがとうtaurayi ... repeatCountは問題を解決しました。しかし、360ラウンドから別のラウンドへの少しのトランジション・ラグがありますが、それを取り除くことも可能ですか? – sandy

+0

@sandy、私の答えを更新しました。 – Taurayi

+0

イージーリスありがとうございました!それが私の問題を解決しました。 – botchniaque

0

非常にシンプルな大きな助けになるでしょう。この効果を達成するためにどのように任意のポインタ。ロードが発生したときに動作する入力フレームリスナを設定するだけです(タイムラインアニメーションは使用しないでください)。

obj.addEventListener(Event.ENTER_FRAME, doRotate); 

function doRotate(e:Event):void{ 
    obj.rotation += 1; //in whatever direction/orientation/increment you wish 
} 

ロードが完了したら、リスナーを削除してください。

+0

このobjはイメージのオブジェクトです...?あなたはそれをもっとexpainすることができますか?作成完了時にイベントリスナーを追加する必要があります。削除する方法は... – sandy

+0

objは、移動するオブジェクト(ムービークリップ/ビットマップ/ etc)のインスタンス名です。インスタンスを表示リスト(ステージ上)に追加した直後に追加し、ロード中にロード処理が完了したら、 'obj.removeEventListener(Event.ENTER_FRAME、doRotate);'だけを削除してください。 as3 101. – Bosworth99

+0

hmmm ...以前私は、アクションスクリプトの中でrotateクラスを使用して、画像を中央から回転するように設定していました。パブリック関数rotateImgEffect(img:Image):void { \t \t \t \t var rotEff:Rotate = new Rotate(); \t \t \t \t // IMGは、MXMLファイル内の画像コンポーネントのIDである \t \t \t \t rotEff.target = IMG。 \t \t \t \t \t \t \t \t rotEff.originX = img.width/2。 \t \t \t \t rotEff.originY = img.height/2; \t \t \t \t \t \t \t \t rotEff。期間= 5500; \t \t \t \t rotEff.angleFrom = img.rotation; \t \t \t \t rotEff.angleTo = img.rotation + 360; \t \t \t \t rotEff.play();私は今、それを設定することができますどのように \t \t \t \t \t \t \t \t \t \t \t} ...? – sandy

-1

これは、Flexアプリケーションである場合、私はあなたがTimerオブジェクトを使用することをお勧めします。

関連する問題