• 締切済み

ムービークリップの制御?

FLASH MX 2004を使用している初心者です。 どうぞ宜しくお願いいたします。 早速質問なのですが、 私の制作したいフラッシュは下記サイトのナビゲーションです。 http://www.nissan.co.jp/ このサイトでは3つのメイン画像(車)が順番に表示され、 右端の「What's New」にカーソルを合わせると、 「What's New」領域の背景が透けて、 その時表示されていた車のムービーがストップし、 尚かつ車種名のテキストまでストップしたままの状態になります。 ここで一つ教えていただきたいのが、 どのようにして「What's New」にカーソルを合わせた時点で、 その時に表示されていた、どの車種のムービーでも止まるように設定できるのでしょうか。 またこのフラッシュは車種名を表すテキストが一番最後の状態でストップします。 このような設定も同時にできるのでしょうか。 非常にわかりづらい質問で恐縮です。 どなた様かご教授いただけませんでしょうか。 どうぞよろしくお願いいたします。

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

みんなの回答

noname#35109
noname#35109
回答No.1

まあいろんな作り方があると思いますが, フラグをうまく利用しているのではないでしょうか。 あと, ご質問で書かれていない部分が1つあります。 車が移動中に「What's New」にカーソルを合わせると, 車の移動は止まらず, 本来の動きをしてやがて止まるべき定位置で止まります。 そして,テキスト(ロゴ)も車につられて動いています。 まず車だけを考えます。 3つの車をムービークリップに変換し, その3つの車をムービークリップ内もしくは_root上でモーショントゥイーンさせます。 //////////////////////////////////////////////////////////  □レイヤー 筆・・|●--->●///|●--->●///|●--->●///| ////////////////////////////////////////////////////////// ●---> がモーショントゥイーンで動いているとき, ●/// が定位置で止まっているときです。 そして例えば, 「What's New」にカーソルを合わせたとき, 例えば _root のフラグを1にします。 そのことだけを書くとこんな感じです。 -------------------------- on (rollOver) { _root.flag = 1; } on (rollOut) { _root.flag = 0; } -------------------------- 「What's New」に, ロールオーバーしたら, 勝手に作った変数 flag の値を 1 にして, ロールアウトしたら, 勝手に作った変数 flag の値を 0 にする。 という単純なスクリプトですね。 そして,各車の ●/// で止まっている最終フレームにキーフレームを用意して, そのキーフレームに, -------------------------- if (_root.flag == 1) { this.stop(); } -------------------------- と書いておけば, ●/// の最終フレームに来たとき, 「What's New」にロールオーバーしていれば, flag の値が 1 のはずですから,そのフレームで停止します。 そういう単純なことをするのが良いです。 自分でもわかりやすいですし,ムービーの動きも軽くなります。 次に各車ムービークリップの中に, 車種名を表すテキスト(ロゴ)や効果を入れたムービークリップを用意します。 各車ムービークリップ内のタイムライン例  □レイヤー 筆・・|●| ←車種名などのムービークリップ  □レイヤー 筆・・|●| ←車の写真 そして, 車種名を表すテキストなどのムービークリップ内に, テキスト(ロゴ)を動かすアニメーションなどを作成します。  □レイヤー 筆・・|○  |●-->●//| 再び,車ムービークリップの編集に戻って, このロゴが動くムービークリップにインスタンス名を付けます。 「logo」というインスタンス名にでもしておきます。 各車内のロゴは統一して「logo」というインスタンス名にしておきます。 そしてメインムービーの編集に戻り, 各車にインスタンス名を付けます。 1つ目の車のインスタンス名は「car1」, 2つ目の車のインスタンス名は「car2」, 3つ目の車のインスタンス名は「car3」 というインスタンス名にでもしておきます。 同じ車であれば,全てのキーフレームのムービークリップに同じ名前を付ける必要がありますから, 本当は,車の写真をムービークリップに変換した時点で「car○」を付けて置く方が良いです。 そして,  □レイヤー 筆・・|●--->●///|●--->●///|●--->●///| となっている,メインムービーの, ●---> の最初の ● のあるフレームの任意のレイヤーのキーフレームに, 「car1」が表示されたときでしたら, carNo = 1; 「car2」が表示されたときでしたら, carNo = 2; 「car3」が表示されたときでしたら, carNo = 3; と書いてこれまた適当に決めた carNo という変数に各値を入れておきます。 そして, 「What's New」には次のように書けば, 各車は定位置で止まり, 各車内のロゴも最終フレームで止まります。 -------------------------- on (rollOver) { _root.flag = 1; _root["car" + _root.carNo].logo.gotoAndStop(40); } on (rollOut) { _root.flag = 0; } -------------------------- gotoAndStop(40); の40は今適当に入れてみただけで, 実際は各ロゴの最終フレーム数を入れておきます。 _root["car" + _root.carNo]. の [ ] は配列アクセス演算子と呼ばれる物です。 この場合,配列とはあまり関係がありません。 [ "インスタンス名"]  とすると, それが1つの階層として認識されます。 ["car" + _root.carNo]. ですから, もし,_root に ある変数 carNo の値が 2 でしたら, つまり2つ目の車表示中でしたら, ["car" + 2]. という意味になり, つまり, ["car2"]. となるわけです。 つまり全体を通すと _root.car2.logo.gotoAndStop(40); 「2つ目の車のロゴを最終フレームでストップ」 となります。 スクリプトはすんごく簡単でしょう。 なるべく簡単にするのが良いです。 以上は作成例ですが, こんな感じに全体を作って行けば良いのです。 スクリプト自体より,その仕組みを考えるのが少し難しいですね。

oi99aaac
質問者

お礼

sassakunさま 早速の詳しいご説明ありがとうございます。 昨日はバタバタとしておりご返事がおくれて申し訳ございませんでした。今からご教授いただいた内容を試してみたいと思います。 本当にありがとうございました。 涙が出るほどうれしいです。まじで。

関連するQ&A

  • flash の ムービークリップの制御

     フレーム1にムービークリップmovieAがフレーム2にmovieBがあります。それぞれのムービーには連続して再生されないように、フレームの最後にstopを設定してあります。  フレーム1のムービーを再生した後に、ボタンなどを使わずに自動的にフレーム2のムービーを再生させたいのですが、一体どうすればよろしいのでしょうか?GotoAndPlayを1フレーム目に設定すると、movieAを再生せずに2フレーム目に行ってしまいます。それぞのムービークリップに設定しているstopがいけないのでしょうか?何かいい解決策はありますか?フラッシュ用の掲示板でお答えいただいたのですが、それでは解決せずこちらでお伺いすることに致しました・・・。(初歩的すぎてこれ以上聞きにくいし・・・泣)よろしくお願い致します。

  • ムービークリップ内のムービークリップ制御について

    誠に不勉強の段お許しください。 Flashでサイトを製作しているのですが、どうしても分からず投稿させていただきました。 仮に -rootにボタンとAムービークリップ配置しました。 また、Aムービークリップ内の10フレー目にBムービークリップを配置し、Bムービークリップ内にボタンを配置しています。 _rootのボタンからAムービークリップを制御して10フレーム目のBムービークリップを表示はできるのですが、-root上でAムービークリップのBムービークリップ内のボタンでBムービークリップを制御するのにはどうすればよろしいのでしょうか。 なにとぞご教授いただけましたら幸に存じます。

  • ムービークリップ再生順序 制御について

    はじめて質問します。Flash初心者ゆえつたない説明ですいませんが、よろしくお願いします! Flash:ActionScript2.0 [現状] メインフレームにABCというムービークリップを配置しています。 それぞれ「mc1」「mc2」「mc3」というインスタンス名がついています。 各ムービークリップにはそれぞれ動きが設定しており、”moving”というフレームラベルをつけています。 [どう動作してほしいか] まずAのムービークリップが再生。Aのムービークリップ再生終了。 ↓ Bのムービークリップ再生開始。Bのムービークリップ再生終了。 ↓ Cのムービークリップ再生開始。Cのムービークリップ再生終了。 ↓ Aに戻る。 上記の動きをタイムラインを利用するのではなく、メインフレームに1つactionScriptを書くことで動作させるにはどうしたらいいでしょうか? ちなみに今は以下のように記述しており、実行すると3つのムービークリップが全て同時に動いてしまいます。 var list:Array = new Array(); for(var i=1; i < 4; i++) { var mcname = "mc" + i ; list[i] = eval(mcname); list[i].gotoAndPlay("moving"); } よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH MXでムービークリップをボタンではなくムービークリップ自体で操作できますか?

    いまだにFLASH MXを使っています。 やりたいことはムービークリップを作成し、マウスがそれに触ると停止し、離れると動く、といった感じにしたいのですが、どうにも上手くいきません。 他にボタンを作成しそこにアクションを設定すれば上手く動くのですが ボタンではなく自分自身で操作できないかと思っています。 ボタンのシンボルをムービークリップ(movie)化 それをステージに配置しアクションを設定 アクションイメージ on (rollOver) { movie.stop(); } on (rollOut) { movie.start(); }

  • ムービークリップの入れ子

    Flash CS3の初心者です。ムービークリップの入れ子を使用した際、こちらが思うようにフレーム処理をしてくれません。 "TOP"と名前をつけた1つのシーンに「アクションスクリプト」、「画像」、「テキスト」の3つのレイヤーを準備し、「画像」レイヤーには入れ子になったムービークリップを挿入しています。 入れ子のムービークリップに仕込んだモーショントゥイーンが終わってからテキストを表示する処理をしてほしいのですがうまくいかず困っています。 <作業内容> (1)画像レイヤーにはモーショントゥイーンを仕込んだムービークリップを1フレーム目から挿入しています。(作業場所:TOP/) (2)順序付けのためテキストレイヤーは1フレーム目は空白にし、2フレーム目から挿入しています。(作業場所:TOP/) (3)アクションスクリプトのレイヤーには1フレーム目と2フレーム目にはそれぞれ以下の記入をしています。(作業場所:TOP/)  this.stop(); (4)画像レイヤーに挿入したムービークリップでは、入れ子のムービークリップのレイヤーの他にアクションスクリプトのレイヤーを設け、その最終フレームでは"this.stop();"、"gotoAndPlay(2,"TOP");"と記入しています。(作業場所:TOP/画像ムービークリップ) <問題> (1)~(4)でムービープレビューを実行すると、入れ子にしたムービークリップのモーショントゥイーンは最後までうまくいきますが、(4)の"gotoAndPlay(2,"TOP");"がエラーとなり、「ArgumentError: Error #2108: シーン TOP が見つかりません。・・・」となってしまいます。 シーン名はウィンドウのシーンパネルで確かにTOPに変更しています。ちなみに"TOP"をthis.parentに変更して実行すると、3つのレイヤーの処理が同時にスタートしてしまいます。 最初に記載した動作の実現方法や参考HPについてご教授頂けると大変助かります。よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flashムービーで通信制御?

     こんにちは、honiyonです。 http://www.garage.co.jp/~websol/local/entertainment.html  ここの右上「PR」の所で流れているムービーなのですが、Flashムービーで制御されています。  色んなテキストや、ムービーが淡々と流れているのですが、これは swf内に格納されているわけではなさそうです。  どこかと通信して、ストリームで表示されているように感じるのですが、Flashでそのような制御は可能なのでしょうか?  現在Flash初心者で、お勉強中です。  宜しくお願いします(..  

  • ムービークリップ変換について質問です。

    AS3.0でCS5です。 やや略しますがこのような感じでASでダイナミックテキストを表示させています。 package { public class test extends MovieClip { public function test() { var textInput:TextArea = new TextArea(); var textOutput01:TextField = new TextField(); var textOutput02:TextField = new TextField(); var textOutput03:TextField = new TextField(); textOutput01.text = 'あああ'; textOutput02.text = 'いいい'; textOutput03.text = 'ううう'; addChild(textInput); addChild(textOutput01); addChild(textOutput02); addChild(textOutput03); } } } 実現したいことは、 1:ダイナミックテキストをクリックすると文字がテキストエリアに表示 2:ダイナミックテキストの移動(ドラッグ&ドロップ) ステージに配置する場合であれば、 1:ステージにダイナミックテキストを配置 2:ダイナミックテキストをムービークリップに変換 これでいいと思うのですが、ASだけでこのようなことを実現するには どうすればいいのでしょうか? ダイナミックテキストのままでは、クリックもできないのでムービークリップに 変換しなければ無理かと考えております。 ちなみに、テキストエリアに表示された文字を変更すればダイナミックテキストにも 反映されるものにしたいのでダイナミックテキストは外せません^^;

    • ベストアンサー
    • Flash
  • ムービークリップ内に空ムービーを置いて外部SWFをロードするやり方

    ムービークリップ(menu1)このムービーはシーン1に設置してあり、動きはクリックすると右から左に引き出す感じのナビゲーションにしてあります。 それがmenu1,menu2,menu3とありそれぞれ再度押すと元の場所にもどります。 ここまでは完成しているのですが、このmenu1,2,3をそれぞれ押して引き出した後にその引き出した画面にコンテンツを外部swfでロードさせたいのですが、まったく表示されず白い画面のままです。 this.stop(); if(this.onFlag == 0){ //↑左にコンテンツをopenさせ元の位置に戻らぬようストップ //↓menu1外部charch読み込みswf_charchは空ムービー swf_charch.loadMovie("charch.swf"); } このスクリプトをムービークリップmenu1のフレームに書き込んでます。 空ムービー(swf_charch)をつくりmenu1に配置して、インスタンス名もswf_charchにしてあります。 もしかして、ムービークリップ内に空ムービーを入れ子にして外部swfの読み込みは不可能なのでしょうか? それともスクリプトの記述がloadMovieではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • ムービークリップに配置されているボタン

    Thinking Flash というテキストのInterface 04のサムネールプレゼンテーションを自分のサイトに使いたいと移植?していたのですが、ムービークリップシンボル内にボタンシンボルが配置されていて、その部分の説明は省かれていて、どのようにすればムービーの中にボタンをしこめるのかわからず迷路に入ってしまいました。きっとすごく初歩的なことなんだと思うのですが、まったく検討がつきません。宜しくご教授頂けると助かります。宜しくお願い致します。

  • ムービークリップ再生後次のフレームへ移動しません

    アクションスクリプトを使って、テキストが下から上へ流れるようにムービークリップを再生し、テキストが流れ終わったところで次のフレームへ移動させたいのですが、フレームが移動せず困っています。 スクリプトは色々なところで調べて、やっとの事で下記のように書きました。 使用しているのはFlash MX 2004 です。 |○  □|○|  ←1.スクリプトレイヤー |●    □|  ←2.ムービークリップレイヤー |○|●→|●|  ←3.ムービークリップ後に再生したいレイヤー 1.のスクリプト(2つのキーフレームいずれとも) stop(); 2.のムービークリップのスクリプト onClipEvent (load) { spd =5; onClipEvent (enterFrame) { this._y = this._y-spd; if (this._y<=-10) { spd = 0; gotoAndPlay(2); } } 知り合いにお見舞いのメッセージをと思って作ったのですが、送ることが出来なくてとてもあせっています。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash