2012-03-20 7 views
0

私は新しいゲーム開発で、flash-cs5で簡単なゲームを作成しようとしています。タイムラインに3つのモーショントゥイーンを作成しました。特定のモーショントゥイーンを停止しようとしています。そのトゥイーンのムービークリップがクリックされている間に他のtweeensが実行されているときに、停止したムービークリップが再びクリックされたときにトゥイーンを再開します。特定のモーショントゥイーンのストップ&レジューム

アドバンスアドバンス。

答えて

0

以下は、各モーショントゥイーンを独自のムービークリップ内に配置していることを前提としています。私は1つのトゥイーンを止める方法を知らず、もう1つのムービークリップを1つのムービークリップに残しておきます(または、それぞれがメインステージにある場合)。

つまり、アニメーションをかなり簡単に停止して開始することができます。以下は、再生中のモーショントゥイーンを停止し、その時点からモーショントゥイーンを再開する方法の例です。

この例では、「myMovieClip」は、使用しているムービークリップです。残りのムービークリップは単独で再生するので、残しておきます。私はまた、myMovieClipがデフォルトで再生されていると仮定しています。

以下はAS3のものです。メインステージのアクションパネル(複数のフレームがある場合は最初のフレーム)に配置します。

また、ムービークリップに名前を付けたことを確認してください。これを行うには、デザインモードでステージのMovieClipをクリックし、[プロパティ]をクリックします。ボックスの方にテキスト入力ボックスがあるはずです。 MovieClipに必要な名前を書き込んでください。

//Declare a boolean variable that determines whether or not the movieclip timeline is playing. 
var ClipPlaying:Boolean = true; 

//Add the mouse click event listener to the movie clip. 
myMovieClip.addEventListener(MouseEvent.CLICK, StopOrStartClip); 

//Declare the function for the above event listener. 
function StopOrStartClip(evt:MouseEvent):void 
{ 
    //Switch statements are my personal favorites...they're more streamlined than if statements. 
    switch(ClipPlaying) 
    { 
     //If the clip is playing it, we stop it and set ClipPlaying to false. 
     case true: 
      myMovieClip.stop(); 
      ClipPlaying = false; 
     break; 
     //If the clip is not playing, we start it and set ClipPlaying to true. 
     case false: 
      myMovieClip.play(); 
      ClipPlaying = true; 
     break; 
    } 
} 

ここで覚えておくべき最も重要な機能は以下のとおりです。

myMovieClip.stop(); 

これは、現在の位置でアニメーションをフリーズします。

myMovieClip.play(); 

これは、現在の位置からアニメーション再生を再開します。

いずれかを使用する場合は、「myMovieClip」をムービークリップの名前に置き換えてください。

ちょっと関係がありませんが、私はフラッシュゲームを作成する方法を学ぶためにActionScript 3.0 Game Programming University本を強くお勧めします。

+0

こんにちは、JasonMc92さん、ありがとうございました。それは有用だったが、実際には私がしようとしているのは、ステージ上で私は5つのトゥイーンをプレイヤーがそれらのアニメーションをクリックして停止する必要があります(他の実行中)と同じムービークリップがクリックされている場合再開しました(他のムービークリップに干渉することなく)。ここで与えられた例は1つしかないので、私の場合、この1のような5つの関数が必要です。または、この関数内ですべてのムービークリップとトゥイーンのループを使って行うことができます。もしそうなら、私はこれらすべてのトゥイーンをどのようにループするのですか?ありがとう –

+0

さて、私はあなたが言っていることを知っていると思うが、確認してみよう...あなたは5つのムービークリップを持っていて、1つをクリックすると、再生中は一時停止し、そのワンクリックで影響を受けません。正しい?もしそうなら、私はそれに対処するために編集することができます。 – CodeMouse92

+0

はい、そうです。ありがとう –

0

実際には5つの異なるイベントリスナー、関数、または変数は必要ありません。あなたはそれのすべてを処理するために一つの関数を作ることができ:

stage.addEventListener(MouseEvent.CLICK, stageClick); 

function stageClick(event:MouseEvent):void { 

//I prefer "if" statements 

if (event.target == myMovieClip1) stuff here; 
else if (event.target == myMovieClip2) stuff here; 
else if (event.target == myMovieClip3) stuff here; 
else if (event.target == myMovieClip4) stuff here; 
else if (event.target == myMovieClip5) stuff here; 

} 

必要であれば、私はより多くの詳細を追加することができますが、この質問は、そう、おそらく3年前からありませんでした。

関連する問題