• 締切済み

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で作りたいと考えています。 出来れば、動きだしと、動き終わりのスピードなども変えたいと思っています。 アクションの記述を教えていただきたいと思います。 お手数ですが、初心者ですので分かりやすく お願いいたします。 それでは、宜しくお願いします。

  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

  • 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

  • removeChildについて(AS3)

    ActionScript3のremoveChildについて、お教えください。 FlashCS5 windowsです。 どうぞ、よろしくお願いします。 順を追って、ご説明します。 ムービークリップ「テストA」「テストB」「テストC」の3つを作成します。 テストC→プロパティ→ActionScript用に書き出し→クラス で、TestCとクラス名を付けます。 ムービークリップ「テストA」のインスタンス名をtestA_mcとして、ステージに配置します。 testA_mc内のタイムラインに、 //---------- var testC_mc:TestC = new TestC(); addChild(testC_mc); //---------- と記述します。 ムービークリップ「テストB」を、ステージに配置します。 テストB内のタイムラインにremoveChildを書いて、 testA_mc内のtestC_mcをremoveChildしたいのですが、 どのように書けば、良いでしょうか、、、? ※不可能な場合は「不可能」と教えていただけますと、助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • flash as3 ムービークリップの基準点

    flash as3 ムービークリップの基準点について質問させていただきます。 A_mcというムービークリップがあったとして、そのムービークリップの中心の座標と、ステージの中心の座標が合うように、そのムービークリップを移動したいのですが、どうコードを書いていいのか分かりません。 var containerXPos:Number = A_mc.x; (containerXPos)* 0.5 = stage.width * 0.5; イメージはこんな感じで、これを使える形にしていただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0孫連番MCの処理

    Actionscript3.0超初心者です。 トップのフレームにaaaと言うムービークリップがあり、その中にb1,b2,b3・・・・b30と言う連番名ムービークリップがあるとき。 トップフレームから連番ムービークリップをそれぞれ2フレームに移動し停止させたい場合。 b1だけなら MovieClip(aaa.getChildByName("b1")).gotoAndStop(2); で動きました。 この、"b1"部分を for文を使って操作するコードが分かりません。  this["b"+i]のような便利な方法はありますか? どなたか教えて頂けると助かります。 お願いします。

    • ベストアンサー
    • Flash
  • Flash フレームを指定してムービークリップ再生

    ActionScript超初心者です。 よろしくお願いします。 ステージ上にボタン「A」「B」「C」を配置、 ボタン脇のスペースにムービークリップを配置、各ボタンで切り替え再生させたいと思っています。 2フレーム目に簡単なアニメーションのムービークリップ「animA」を、 3フレーム目に同様の「animB」4フレーム目に「animC」を配置し、 各ボタンon (release)で各ムービークリップの再生をしたいのですが うまくいきません。 どこにどのようなスクリプトを書けば良いか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • (AS3)「var mc:MovieClip = new MC?();」 の?の部分を変数にできないか

    タイトルの通りです。 今ライブラリには100個のムービークリップがあって、それぞれMC1~MC100までのリンケージ名(クラス名)でActionScriptに書き出しているものとします。 これらを動的に「var mc:MovieClip = new MC?();」というふうにしたいのですが、うまくいきません。 一応下のように自分なりに考えてみたのですがやっぱりダメでした。 var i:int = 3; var str:String = "MC"+i; var mc:MovieClip = new str(); stage.addChild(mc);

    • ベストアンサー
    • Flash
  • 【action script】複数のMCを・・・

    環境:Flash8 actionscript2.0 10こ程度のムービークリップをそれぞれクリックした時に同じ動きをさせる文を1つにまとめることは可能でしょうか? ムービークリップそれぞれに mc1 mc2 mc3 …mc10 とインスタンス名をつけています。 さらにその下位層に mc1  └kai_mc mc2 └kai_mc ・ ・ ・ mc10 └kai_mc と置いています。 このそれぞれのムービークリップをクリックした際、その下位層のムービークリップを次のフレームに移動させたいと考えています。 それぞれ個別に書くと _root.mc1.onRelease=function(){ _root.mc1.kai_mc.nextFrame() } と書いていたのですが、ムービークリップの数を増やすかも知れずムービークリップの数分書くのは大変なので1つにまとめたいと考えています。 自分で以下のように書いてみました。 i=0 for(i=1; i>10; i++){ _root["mc"+i].onRelease.function(){ _root["mc"+i].kai_mc.nextFrame() } } うまくいかないので試行錯誤したりtraceで調べたりしたのですがどうもよくわかりません。 i=0 for(i=1; i>10; i++){ _root["mc"+i].onRelease.function(){ trace(i) } } で出力すると 11と表示されるのでpassが違うとは思うのですが・・・ iを1~10で指定しているのになぜ11となるのでしょうか? どうすればpass指定できるのでしょうか? そもそものやり方、考え方が違うかどうかも含め、教えて頂きたく質問しました。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • スクリプトはどこに書く?MCとボタンの違いは?

    ちょっと根本的な質問なのですが、 ActionScriptはどこに書くのが流行というかスマートだとされているんでしょうか? 私は普段、まとめて書いたほうが後で探しやすいだろうと思って 全てステージに書いています。 ネット上でサンプル等を落としてみるとムービークリップに書いているものをよく見るので、自分のやり方は主流ではないのかな?と若干心配になりました。 でもMCに書いていると、MCが多くなった時にスクリプトを探すのが大変ではないでしょうか? それと、普段はボタンは使わずシンボルはすべてムービークリップにして使っていますが、これもあまりよくないでしょうか? いまいちボタンの存在意義がわかっていないのかも知れませんが、 ボタンでないと出来ない事などはあるのでしょうか? 完全に独学な上に、今までほかの人と意見交換などをする機会もなかったので ここで質問させていただきました。 意見いただければ幸いです。

    • ベストアンサー
    • Flash
  • AS3 MC内ボタンクリックでシーン1上MC2動く

    AS3にて、 シーン1上に、MCとMC2を配置し、MC内にはボタン(mc_button)を配置します。 (入れ子のボタンを作りたい) mc_buttonを、クリックすると、MC2が動く(横に1移動)ようにしたいのですが。 AS3では、_rootが使えないので、どうしたらよいのか分かりません。 AS3では、出来ないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ボタンを押すとMCが大きくなるFlash

    AdobeCS4、ActionScript2.0で、ボタンを押すとMCが大きくなるFlashを作ろうとしているのですが、 上手く動かないので質問させていただきます。 画面上に、ボタンと四角のムービークリップがあり、 ムービークリップの上にダイナミックテキスト(変数名point)でボタンを押した回数を表示させて、 ボタンを押すとMCが大きくなるようにしたいのです。 ボタンを押して回数を数えさせるのは、 on (press) { point = +1; } で出来るようになりました。 MCを大きくするのも、過去の質問を参考にしたら出来るようになったのですが、 この二つを合わせると動かなくなってしまいました。 また、過去の質問http://okwave.jp/qa/q4271772.html これだと、ずっと大きくなってしまうので、ある程度大きくなったら、 大きくなるのを止めたいのですが、それも上手くいきませんでした。 どうしたらいいのか、教えていただけますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • createEmptyMovieClipdeで作成したmcをASで動かす

    createEmptyMovieClipで空のムービークリップを作成し、 そのMCに画像を読み込ませた後、右に徐々に移動させたい場合、 どのようなスクリプトを書いたらよいのでしょうか。 for(i=0; i < 10; i++){ createEmptyMovieClip(["load_mc"+i],i); _root["load_mc"+i]._x = i*120; _root["load_mc"+i]._y = 20; _root["load_mc"+i].loadMovie(img); } _root["load_mc"+i]._x += 10; とすると、単純にx座標が10の所にMCが配置されるだけで、 モーショントゥイーンのように動いてくれません。。。。

    • ベストアンサー
    • Flash

専門家に質問してみよう