2009-06-10 18 views
3

ここではコード内でやりたいことがあります。 車のMCをx秒間アニメーション化します。 車が終了したら、犬のMCをy秒間動かします。 など...actionscriptの行間の一時停止

このコードでは、すべてのアニメーションが同時に実行されます。

 
car.slideTo(200,100,1); 
dog.slideTo(200,100,5); 
blimp.slideTo(200,100,2); 

...

これらの行の間に入れてポーズ機能を記述することが可能ですか? 私はgetTimeoutを使用しようとしましたが、別の関数として各アニメーションを定義する必要はありません。

答えて

3

my_funcを1秒後に呼び出すsetInterval(my_func、1000)を試してみることができます。

1

は、私は強くあなたがTweenMax http://blog.greensock.com/tweenmaxas3/

を使用するようにアドバイスそれは、コードの途中で一時停止など、あなたが夢を見ることができるすべてのアニメーショントゥイーン機能を持っています。

また、使い方も簡単です。

import gs.TweenMax; 
// move the movieclip to (500,200) in 2 seconds: 
var myTween:TweenMax = new TweenMax(mc, 2, {x:500, y:200}); 

、あなたはいつでも

myTween.pause(); 

のようにそれを一時停止することができます。しかし、あなたのケースであなたはおそらくあなたがまた

import gs.*; 

var tween1:TweenMax = new TweenMax(mc1, 1, {x:300,y:400}); 
var tween2:TweenMax = new TweenMax(mc2, 1, {x:200,y:400}); 
var tween3:TweenMax = new TweenMax(mc3, 1, {x:100,y:400}); 

var myGroup:TweenGroup = new TweenGroup([tween1, tween2, tween3]); 
myGroup.align = TweenGroup.ALIGN_SEQUENCE; 

のように書くことができ、あなたのトゥイーン

をキューにしたいです、TweenMax & Tweensyは現在、AS3に存在する最速のトゥイーンライブラリですが、Twee nMaxは、私の意見では少し使いやすく、異なるトゥイーンエンジン間の比較http://blog.greensock.com/tweening-speed-test/

+0

これはユーザーの質問には一切触れていません。 – fenomas

+0

@fenomas:あなたが何を言っているのか分からない。彼はアニメーショントゥイーンを一時停止したい、私は彼にそれを行うためのライブラリを提供する。 – Unreality

+1

いいえ、前のアニメーションが停止したときに1つのアニメーションを開始します。彼があなたのライブラリやライブラリを使ってトゥイーンをするかどうかにかかわらず、彼は依然としてコールバックかタイムアウト/インターバルが必要です。あなたが提案したライブラリはそれをもっと簡単にしません。 – fenomas

2

SetInterval()を使用します。あなたの質問は、多かれ少なかれのActionScriptがどのように動作するかの誤解を公開

var Timer = setInterval(delay, 500); //calls the function delay after 500 milliseconds 

function delay() { 
    trace("delayed!"); 
    clearInterval(Timer); //stops the function from being called again 
} 
+0

ベスト回答はこちら、IMHO。議論の余地はない。コードをクリアしてください。 :) – CodeMouse92

0

:ここ

は役立つかもしれない簡単な例です。 Flashがコンテンツを実行しているときの動作は、まずすべてのフレームスクリプトを実行してから、アニメーションを1フレーム進めてから画面を更新します。次に、次のフレームですべてのスクリプトを実行し、アニメーションをもう一度進めると、画面が更新されます。

2行のコードの間に何らかの一時停止機能を置くと、Flashはそのフレームスクリプトのセットを完了しようとしているため、一時停止中に何もしません。その後、一時停止が完了すると、、次に Flashが最終的に画面を更新するため、3つのアニメーションはすべて同時に動作します。

痛みのように見えるかもしれませんが、getTimeoutを使用する必要があります。または、Unrealityの回答に示されているような、トゥイーンの開始を遅らせる機能を含むトゥイーンライブラリを使用することもできます。その下には同じことがあります。

+0

彼の質問男を読んで、彼は同時にアニメーションを実行したくない、これはTweenMaxが便利になる理由です。 – Unreality

+0

私の答えは、ASの実行を一時停止することで、彼が望む効果が得られない理由を説明しています。私はあなたのトゥイーン図書館が素敵だと確信していますが、彼が使用しているライブラリが何であっても、タイムアウト/インターバルを使用してトゥイーンを同期させるべきです。 – fenomas

+0

使用するライブラリがはるかに簡単であれば、トゥイーンの同期にタイムアウト/インターバルを使用しないでください。 TweenMaxは、トゥイーンパフォーマンスの点で最も優れています。あなたは、TweenMaxよりも優れたパフォーマンス機能を書くチャンスはごくわずかです。私は図書館のタイムアウト/インターバル機能が自分で書くよりもはるかに効率的であることを保証することができます – Unreality

4

残念ながら、現在、これを行う方法はありません。 ActionScriptはシングルスレッド言語であり、コールバックなしのタイマーの使用はサポートしていません。しかし、この機能は(コルーチンと呼ばれるスレッドシステムを介して)確かに可能であり、将来のリリースで追加される可能性があります。

しかし今のところ、私たちはsetTimeout()に悩まされています。

関連する問題