- ベストアンサー
スクリプトはどこに書く?MCとボタンの違いは?
ちょっと根本的な質問なのですが、 ActionScriptはどこに書くのが流行というかスマートだとされているんでしょうか? 私は普段、まとめて書いたほうが後で探しやすいだろうと思って 全てステージに書いています。 ネット上でサンプル等を落としてみるとムービークリップに書いているものをよく見るので、自分のやり方は主流ではないのかな?と若干心配になりました。 でもMCに書いていると、MCが多くなった時にスクリプトを探すのが大変ではないでしょうか? それと、普段はボタンは使わずシンボルはすべてムービークリップにして使っていますが、これもあまりよくないでしょうか? いまいちボタンの存在意義がわかっていないのかも知れませんが、 ボタンでないと出来ない事などはあるのでしょうか? 完全に独学な上に、今までほかの人と意見交換などをする機会もなかったので ここで質問させていただきました。 意見いただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ActionScriptでゲームやヴィジュアルサイト、動画再生コンテンツを仕事として作っている者です。 一応仕事上での定石を書いておきます。 まず、タイムライン上にスクリプトを書く事はほとんどしません。 stopやgoto~ぐらいでしょうか? ボタンの作成も、マウスカーソルを重ねたとき(ロールオーバー)やクリック時の動作等は全てASファイルに記述し、MCにクラス指定をする事で読み込ませて対応しています。 なぜか? >でもMCに書いていると、MCが多くなった時にスクリプトを探すのが大変ではないでしょうか? これに対応するためです。 他ページへの移動やランダム処理等、同じ様な処理をコピペで複数のMCに記述するのも良いですが、修正するのが大変です。 スクリプトの一元管理のためには、ASファイルによるクラス化は必須です。 これはAS2.0でも3.0でも同じです。 クラス化の方法や詳しい概念はここで記述するには長くなるので割愛させていただきます。 代わりにお勧めの書籍を紹介します。下記URLの物です。 AS3.0で、なおかつ4,000円と高価な本ですので、趣味で楽しまれているには不要と思いますが、より高度なフラッシュを作成したいと言う事であればまず強く購入をオススメします。 http://www.amazon.co.jp/gp/product/4881665901/ref=s9qpick_c4_img3-rfc_g1?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-4&pf_rd_r=0X3FEB8V71DQ2XGG5GMC&pf_rd_t=101&pf_rd_p=74576506&pf_rd_i=489986 クラス化の方法や詳しい概念はネットで検索するだけでも、色々と役に立つブログやサイトがあるので探してみてください。 また、このクラスと言う概念を理解すると、他のクリエーターが作成されているライブラリを活用する事が出来ます。 XMLの簡単な処理、スクリプトによるモーショントゥィーン(タイムラインで行うより遥かに滑らかで簡単!!)、3D表現、物理演算。 これらの事がものすごく短時間で実現可能となります。 どちらにせよ、今後のヴィジョンとやりたい事によると思います。 クラスの概念の理解にも、それなりの時間と努力は必要ですから。 ただ、Flashで出来る事は皆さんが思っている以上に増えています。 せっかく高価なソフトを使うのであれば、こう言った所に目を向ける事も面白いのではないかと思います。
その他の回答 (2)
- yanagiman2
- ベストアンサー率50% (5/10)
個人的な意見ですが参考までに おそらくtkmojoさんは色々試されていると思います。 スクリプトをステージに書く。 ボタンをムービークリップで作るなど。 個人的には色々な書き方を知っていれば あとはCaseByCaseで書いていけばよいのではないでしょうか? 一緒に作業する人、引き継ぐ人に合わせる。 2.0的な書き方になれた人ならボタンを使う構築にするとか。 これから3.0的な書き方に少しでも近づけたい と言うならステージのみに書いていくとか。 (厳密には3.0は書き方が違いますが) >でもMCに書いていると、MCが多くなった時にスクリプトを探すのが大変ではないでしょうか? ご存知かもしれませんが こちらに関してはアクションパネルの左側に インスタンス一覧が出ます。 そこでインスタンスをクリックすると mcに書かれているスクリプトを見れるので便利です。 逆の場合もインスタンス名が<>つきで表示されますよ。 >ボタンでないと出来ない事などはあるのでしょうか? こちらに関しては私の知る限りではないと思うのですが。。。 まとめますと今の書き方でいいと思います。 ちなみに私も同じ書き方です。
お礼
お礼が大変遅くなり、申し訳ありません。 回答ありがとうございます。 自分のやり方が主流なのかどうかよくわからずやってましたが、 回答を見て安心したのでとりあえず今のままで進んでいこうと思います。
- BlurFiltan
- ベストアンサー率91% (1611/1754)
> ネット上でサンプル等を落としてみるとムービークリップに > 書いているものをよく見るので、 > 自分のやり方は主流ではないのかな? > と若干心配になりました。 onClipEvent() のことですか? もしそうであれば, それはおそらく古いサンプルでしょう。 現実問題, onClipEvent() は Flash5 で登場して, FlashMXでは MovieClip.on○○ にほとんど取って変わられてしまいましたから, その命は短命だったと思います。 MC や ボタン 自体にスクリプトが書けるのは,今のところActionScript2.0 までです。 FlashCS4 や CS5 などで仕様変更がないかぎり,ActionScript3.0 では, ムービークリップにもボタンにもスクリプトは書けません。 その点, 主流であってもなくても(そんなことはどうでも良いのですが), フレームに書く習慣というものは大切だと思います。 > でもMCに書いていると、 > MCが多くなった時にスクリプトを探すのが大変ではないでしょうか? うーん... それは何とも言えませんね。 逆に フレーム に書いた方が, 「このMCを動かしているスクリプトはどこにあるの!!!??」 って探すのが大変な場合もあるかもしれません。 動かしたいMCに たとえば次のように書いておけば自動的に動きます。 onClipEvent (enterFrame) { this._x += 10; if (this._x>=Stage.width+100) { this._x = -100; } } インスタンス名も何も不要です。 ステージに配置した目の前にあるそのMCに対して, 「動け!」 と書いているだけのことで, オブジェクト指向とか抜きで主観的に動かせます。 またMCの一番の特徴(メリット)は, 「ムービーの中にムービーを持てる。」 =「世界の中に別世界を構築できる。」 ということです。 たとえばMCの中に複数フレームを持たせて, その中に色々なアニメーションを作成できるわけです。 そのムービークリップ内アニメーションの最終フレームで stop() させたい場合は, ムービークリップ内タイムラインの最終フレームに stop() を書くべきです。 _root のフレームからずっとMCのタイムラインを監視させて, 最終フレームに達すればそのMCを stop(); させることは可能ですが, 普通はそういう方法は取るべきではありません。 ムービークリップがたくさんあればあるほど, その最終フレームに stop() を書くべきです。 onClipEvent() は使わないにしても, やはりMCの中にスクリプトは書くべき場合は多々多々あると思いますから, そういったものまで含めると, MC にスクリプトを書くことは凄く大切なことだと思います。 > それと、普段はボタンは使わずシンボルは > すべてムービークリップにして使っていますが、 > これもあまりよくないでしょうか? 良くないことは決してありませんが,面倒くさいでしょう。 ボタンなら自動的に何も指示しなくても, 「アップ」フレームには普通の状態の絵 「オーバー」フレームにはマウスを乗せたときの絵 「ダウン」フレームにはボタンを押したときの絵 をそれぞれ用意すればあとは, そのボタン.onRelease = function(){ gotoAndPlay(5); }; や,そのボタン自体に, on(release){ gotoAndPlay(5); } と書くだけでボタンとして機能しますから楽チンです。 (ただし,ボタンの場合融通の利いた反応を見せてくれません。たとえばトグルボタンのような動き。) 楽か楽でないかというだけの違いと, on(release){ gotoAndPlay(5); } などを使った場合,階層をそんなに気にしなくて良いというのがボタンのメリットです。 使いたくなければまったく使う必要はありません(怒っているのではなくて,ホントにそう思います。)。 しかし, ムービークリップの onClipEvent() はどうでも良いとして, ボタンはやはり, ボタンに直接書く on(release) などが使えた方が主観的で良くないでしょうか? と私は思います。 「ボタンはクリックすれば動くような命令が書ければそれで良い! なぜわざわざインスタンス名を付けて 関係のないフレームにスクリプトを書かねばならないんだ!?」 なんて方はたくさんいらっしゃると思います。 それに一般的に身近な言語(JavaScript や HTML の onClick などや VBA のボタン自体に書けるプログラムなど)では,ボタンに実行命令を書いたりボタンから function などを実行できます。 現在の ActionScript3.0 だけが非常に特殊に思えます。 プログラミング的にはどうであっても, 人間の普通の感性として,「そのものに対して教え込ませる(犬に対してお手をさせる)」ような感覚は普通あるのではないかと思います。 そういう方は多いと思うので(実際に多いので), 仕様変更はあるかもしれませんが, とにかく現在は「フレームに書く」というのが主流ですし, その方法を使っていて決して間違いではありません。 一応参考まで。 超一流のプロの方々の談義です。 「FLASH-JP.COM - フォーラム on(release)がなくなる!?」 http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=5211&forum=20 (この談義は延々と11ページに渡ります。時間があってもし読む気になればと言う意味で書いただけです。決して読んだ方が絶対良いという意味のものではありません。)
お礼
お礼が遅くなり、大変申し訳ありません。 回答ありがとうございます。 確かにムービークリップに直接書くのも直感的にわかりやすいですよね。 3.0でボタンやMCに書けないというのは知りませんでした。 今は2.0を使っていますが、3.0を勉強していつか移行する際にスムーズにできるよう、 今まで通りフレームに書くようにしていこうと思います。
お礼
お礼が大変遅くなり、申し訳ありません。 回答ありがとうございます。 職業としてされている方なら、基本は外部ファイルにするのですね。 asを外部で、というのはやったことがないのですが、 これから挑戦してみようと思います。