ページの読み込み中にイメージを連続的に回転させたいとします。コードは1ページローディングで正常に動作しますが、同じ効果を継続的に達成するために、.play()
ステートメントを以下に示す無限whileループに含めました。しかし、ページがハングして何も表示されません。イメージを連続的に回転する
while (i == 1)
{
if (rotEff.isPlaying != true)
{
rotEff.play();
}
}
ページの読み込み中にイメージを連続的に回転させたいとします。コードは1ページローディングで正常に動作しますが、同じ効果を継続的に達成するために、.play()
ステートメントを以下に示す無限whileループに含めました。しかし、ページがハングして何も表示されません。イメージを連続的に回転する
while (i == 1)
{
if (rotEff.isPlaying != true)
{
rotEff.play();
}
}
それが無限に繰り返されるように、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>
非常にシンプルな大きな助けになるでしょう。この効果を達成するためにどのように任意のポインタ。ロードが発生したときに動作する入力フレームリスナを設定するだけです(タイムラインアニメーションは使用しないでください)。
obj.addEventListener(Event.ENTER_FRAME, doRotate);
function doRotate(e:Event):void{
obj.rotation += 1; //in whatever direction/orientation/increment you wish
}
ロードが完了したら、リスナーを削除してください。
このobjはイメージのオブジェクトです...?あなたはそれをもっとexpainすることができますか?作成完了時にイベントリスナーを追加する必要があります。削除する方法は... – sandy
objは、移動するオブジェクト(ムービークリップ/ビットマップ/ etc)のインスタンス名です。インスタンスを表示リスト(ステージ上)に追加した直後に追加し、ロード中にロード処理が完了したら、 'obj.removeEventListener(Event.ENTER_FRAME、doRotate);'だけを削除してください。 as3 101. – Bosworth99
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
これは、Flexアプリケーションである場合、私はあなたがTimer
オブジェクトを使用することをお勧めします。
ありがとうtaurayi ... repeatCountは問題を解決しました。しかし、360ラウンドから別のラウンドへの少しのトランジション・ラグがありますが、それを取り除くことも可能ですか? – sandy
@sandy、私の答えを更新しました。 – Taurayi
イージーリスありがとうございました!それが私の問題を解決しました。 – botchniaque