• 締切済み

Fl cs6 as3.0 複数のMCの動かし方。

はしめまして。 Flash cs6 Actionscript3.0で、動画のコンテンツ(web用)に作ろうと思っているas3.0初心者です。 早速、質問をさせてもらいます。 今、ステージ上にA、B、C3つのムービークリップがあります。 それを、それぞれA_mc、B_mc、C_mcとします。 Aのムービークリップが基本的に、ステージ上にあるようにして そのAの中にあるボタン(Bがステージに入ってくる)をクリックすると Bと入れ替わる。 BとCにはそれぞれ、A、B、Cが移動するボタンがついています。 BにあるC、がステージに入ってくるボタンを押せば、Bと入れ替わりCがステージ上に現れます。もちろんその逆もあります。 B、Cがステージにいないときには必ずAがいることにしたいのです。 B、Cが入れ替わる間もAが B、Cが動いている間はステージにいます。 AとBはステージ上方向への移動。 Cはステージ下方向への移動。 (ステージ上にあるのは、A、B、Cのいずれか一つです) モーショントゥイーンを使えば何となく(ホントに何となく)出来るのですが 使わずにasで作りたいと考えています。 出来れば、動きだしと、動き終わりのスピードなども変えたいと思っています。 アクションの記述を教えていただきたいと思います。 お手数ですが、初心者ですので分かりやすく お願いいたします。 それでは、宜しくお願いします。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

状況が良くわからない部分もありますが A_mc,B_mc,C_mc はさらに1つのムービークリップに変換し その親MC(仮称:ABC_mc)を上下に動かして なおかつその ABC_mc の中で A_mc,B_mc,C_mc の 表示/非表示 を切り替えれば良いのではないかと思います。 ◎ ムービーの構造  メインタイムライン(例)   └ABC_mc     ├A_mc     │ ├B(ボタン)     │ └C( 〃 )     ├B_mc     │ ├A(ボタン)     │ └C( 〃 )     └C_mc       ├A(ボタン)       └B( 〃 ) ABC_mc 内はフレーム1のみで ABC_mc の基準点はムービークリップの中央であるものとし A_mc,B_mc,C_mc は ABC_mc 内の同じ座標に重ねて配置するものとします。 そのようにした場合の A_mc,B_mc,C_mc が存在するタイムラインのフレームに書くスクリプト例です。 //=========================== //スピードの設定(一応等速) var spd:Number = 2; //動く正負の初期値を設定 var pm:int = -1; //「ABC_mc」内の「B_mc」と「C_mc」を非表示にする ABC_mc.B_mc.visible = false; ABC_mc.C_mc.visible = false; //ABC_mcに毎フレーム実行するイベントリスナーを登録 ABC_mc.addEventListener(Event.ENTER_FRAME,moveABC); //関数 moveABC の定義 function moveABC(e:Event):void { //「ABC_mc」(イベントリスナー登録ターゲット)を移動 e.target.y += pm * spd; //「ABC_mc」がステージの上に消えたら if (e.target.y < - e.target.height/2) { //「ABC_mc」をステージの下に移動 e.target.y=stage.stageHeight+e.target.height/2; //「ABC_mc.B_mc」を非表示 e.target.B_mc.visible=false; //「ABC_mc.A_mc」を表示 e.target.A_mc.visible=true; //「ABC_mc」がステージの下に消えたら } else if (e.target.y > stage.stageHeight+e.target.height/2) { //動く正負の値を -1 にする pm=-1; //「ABC_mc.C_mc」を非表示 e.target.C_mc.visible=false; //「ABC_mc」内の「A_mc」を表示 e.target.A_mc.visible=true; } } //関数 A_Click の定義 function A_Click(e:MouseEvent):void { //動く正負の値を -1 にする pm=-1; //「ABC_mc」内「A_mc」を表示する ABC_mc.A_mc.visible=true; //クリックした親MCを非表示にする e.currentTarget.parent.visible=false; } //関数 B_Click の定義 function B_Click(e:MouseEvent):void { //動く正負の値を -1 にする pm=-1; //「ABC_mc」内「B_mc」を表示する ABC_mc.B_mc.visible=true; //クリックした親MCを非表示にする e.currentTarget.parent.visible=false; } //関数 C_Click の定義 function C_Click(e:MouseEvent):void { //動く正負の値を +1 にする pm=1; //「ABC_mc」内「C_mc」を表示する ABC_mc.C_mc.visible=true; //クリックした親MCを非表示にする e.currentTarget.parent.visible=false; } //「ABC_mc.A_mc」内のボタン「B」クリック時に関数 B_Click を実行 ABC_mc.A_mc.B.addEventListener(MouseEvent.CLICK,B_Click); //「ABC_mc.A_mc」内のボタン「C」クリック時に関数 C_Click を実行 ABC_mc.A_mc.C.addEventListener(MouseEvent.CLICK,C_Click); //「ABC_mc.B_mc」内のボタン「A」クリック時に関数 A_Click を実行 ABC_mc.B_mc.A.addEventListener(MouseEvent.CLICK,A_Click); //「ABC_mc.B_mc」内のボタン「C」クリック時に関数 C_Click を実行 ABC_mc.B_mc.C.addEventListener(MouseEvent.CLICK,C_Click); //「ABC_mc.C_mc」内のボタン「A」クリック時に関数 A_Click を実行 ABC_mc.C_mc.A.addEventListener(MouseEvent.CLICK,A_Click); //「ABC_mc.C_mc」内のボタン「B」クリック時に関数 B_Click を実行 ABC_mc.C_mc.B.addEventListener(MouseEvent.CLICK,B_Click); //=========================== > 出来れば、動きだしと、 > 動き終わりのスピードなども変えたいと思っています。 ということですが 具体的にどのように動かしたいのかわかりませんし この辺は全く別件として切り放して考えるべきだと思います。 場合によっては(あくまでもの一例) 親の「ABC_mc」を下から上の一方向にだけ イージング付きのモーショントゥイーン(クラシックトゥイーン)で動かして その「再生」/「逆再生」を切り替える方法もあると思います。 「逆再生鉢植え(ActionScript 3.0 バージョン)」 http://suzupara.iinaa.net/mixi/potted_plant_as3/ とにかく 上の A_mc,B_mc,C_mc とは全く切り放して 例えばステージ上に●のムービークリップでも用意し その●をクリックする度に●の動く向きが逆向きになるだけのようなものをとりあえず作って それを進化させて行くような作業が必要でしょう。 「ABC_mc(ActionScript 3.0)」

参考URL:
http://suzupara.iinaa.net/mixi/abc_mc/
wingnut
質問者

お礼

ご回答ありがとうございます。 ここでつまづいて、少しFlashの制作からはなれていました。 頭を整理したところで、とても分かりやすいご回答を頂いて、これから試してみたいと思います。 イージング付きのモーショントゥイーンははじめのものが出来た後に 簡単なものから進化させようと思います。 ホントに分かりやすいご回答ありがとうございました。 また、この件で疑問があった場合は、また宜しくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A