3

これがコードでやりたいことです。車の MC を x 秒間アニメートします。車が完成したら、犬の MC を y 秒間動かします。等々...

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

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

...

それらの行の間に入れる一時停止関数を書くことは可能ですか? getTimeout を使用してみましたが、各アニメーションを個別の関数として定義する必要は避けたいです。

4

5 に答える 5

4

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

しかし今のところ、setTimeout() で行き詰っています。

于 2011-12-19T00:37:51.740 に答える
3

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

于 2009-06-10T17:20:32.403 に答える
2

SetInterval()を使用することをお勧めします。

役立つかもしれない簡単な例を次に示します。

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
}
于 2009-06-10T17:24:35.517 に答える
1

TweenMaxhttp : //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に存在する最速のトゥイーンライブラリですが、私の意見では、TweenMaxの方が少し使いやすく、さまざまなトゥイーンエンジンを比較しています。http://blog.greensock.com/tweening-speed-test/

于 2009-06-10T17:22:49.280 に答える
0

あなたの質問は、ActionScriptがどのように機能するかについての誤解を多かれ少なかれ明らかにしています。Flashがコンテンツを実行しているときは、最初にすべてのフレームスクリプトを実行し、次にアニメーションを1フレーム進めてから、画面を更新します。次に、次のフレームですべてのスクリプトを実行し、アニメーションを再度進めてから、画面を更新します。

したがって、2行のコードの間にある種の一時停止関数を挿入すると、Flashは一時停止中に何も実行しません。これは、Flashがそのフレームスクリプトのセットを終了しようとしているためです。その後、一時停止が終了すると Flashが最終的に画面を更新するため、3つのアニメーションすべてが同時に機能します。

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

于 2009-06-11T04:23:46.987 に答える