• ベストアンサー

flashの基本的なことが理解出来ません。

windowsXPで、FlashMXを始めたばかりの初心者です。 ActionScriptを始めようと、何冊かの参考書を読み始めましたが、 一番最初に書かれている、フレーム、ムービークリップ、ボタンアクションの、 特に、フレームとムービークリップのアクションの違いがよく解りません。 どういう時に、フレームアクションを書くのか・・・良く理解出来ません。 何かに例えて、教えていただけませんでしょうか? 宜しくお願いします。

  • Flash
  • 回答数3
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

フレームアクションは、そのフレームが再生された時(再生ヘッドがそのフレームに来た時)に実行されるアクションです。 例えばフレーム10まで再生して、フレーム5に戻らせたい場合は、フレーム10に  gotoAndPlay(5); というようにアクションを設定します。 関数を定義する場合も、フレームアクションが利用されます。例えば、  function Sample_Function()  {   trace("関数のサンプル");  } は、”出力ウィンドウに「関数のサンプル」の文字列を表示する”、という関数を定義していることになります。 関数は1度定義すれば充分です。何度も定義する必要はありません。ムービークリップアクションはイベントが起こる度に何度も繰り返される可能性がありますが、フレームアクションは、フレームが繰り返し再生されなければ1回しか実行されません。 ムービークリップアクションで関数を定義しても間違いではありませんが、無駄な処理を防ぐため、また、スクリプトを分かりやすくするためにも、フレームアクションが利用されます。 ムービークリップアクションは、「ムービークリップに何かが起こった時」に実行されるアクションです。 「何かが起こった時」を具体的に指示するものが、イベントと呼ばれるものです。 イベントにはいろいろな種類があります。ムービークリップがステージに登場した時に1度だけ発生する load、ムービークリップが再生されている間、常に発生している enterFrame 、マウスボタンが押された時に起こる mouseDown などが、よく使われるイベントです。 フレームアクションとの違いは、ムービークリップアクションを設定する時は、必ず  onClipEvent ( イベント名 )  {   ・・・  } このように、onClipEvent の中に処理を記述しなければならない点です。 また、フレームアクションはそのフレームが再生されれば実行されますが、ムービークリップアクションは、指定したイベントが発生しなければ実行されません。例えば、  onClipEvent ( mouseDown )  {   trace("マウスボタンが押された");  } は、ムービークリップがステージに存在していても、マウスボタンが押されなければ実行されません。その代わり、マウスボタンを押すたびに、出力ウィンドウに「マウスボタンが…」という文字列が表示されます。 ボタンアクションはムービークリップアクションと同様に、「ボタンに何か起こった時」に実行されるアクションです。 ボタンにはボタン独自のイベントがあります。ボタンがクリックされた時に発生する press 、ボタンが押されて離された時に発生する release 、ボタンの上にマウスカーソルが乗った時に発生する rollOver などがよく使われます。 load や enterFrame など、ムービークリップでのイベントはボタンでは利用できませんので、ご注意下さい。 ボタンにアクションを設定する時も、ムービークリップの時とよく似ていて、  on ( イベント名 )  {   ・・・  } このように、on の中に処理を書かなければいけないルールになっています。 ボタンアクションの場合も、指定したイベントが発生しなければアクションは実行されませんし、イベントが発生する度にアクションが実行されます。例えば  on ( press )  {   trace("ボタンがクリックされた");  } このようなアクションをボタンに設定しておくと、ボタンを押す度に出力ウィンドウに「ボタンが…」と表示されるようになります。 勘違いしないでいただきたいのは、これはフレームアクション専用、あれはムービークリップアクション専用、というアクションは、基本的にはないということです。 ムービークリップアクション専用、ボタンアクション専用のアクションは、onClipEvent と on くらいです。 例えば、前述のフレームアクションとして紹介した gotoAndPlay アクションですが、これは必ずフレームに設定しなければいけないという制限はありません。  on ( press )  {   gotoAndPlay(5);  } このように、ボタンアクションとして設定することも可能です。上記の例は、「ボタンが押されたらフレーム5に移動する」という意味です。 ムービークリップのシンボルの編集をすると、そのムービークリップが持つ独自のタイムラインが表示されます。 このタイムラインにもアクションを設定することができます。ムービークリップに設定するのだからムービークリップアクション、と思う方がいらっしゃいますが、タイムラインに設定するアクションは全てフレームアクションです。たとえそれが、ムービークリップのタイムラインに設定する場合であっても、です。 ムービークリップ/ボタンアクションとは、あくまでも、ムービークリップやボタンのインスタンスに設定するアクションのことを指します。 最初は私も、フレームアクションとムービークリップの違いが分かっていませんでした。 まずは簡単なスクリプトを組んでみて、そして、いろいろな失敗をしてみると、だんだん分かってくると思います。 なお、例として挙げたスクリプトは、インデントの都合上、行頭に全角のスペースが入っています。コピーして使う場合は、全て半角のスペースかタブに置き換えて下さい。このまま使うとシンタックスエラーになります。 長くなってすみませんでした。

dancepartner
質問者

お礼

返事が遅くなりました。 詳しくありがとうございます。何度も何度も読み返し、まだまだ勉強が足らないことを痛感しています。 出来れば、もう一つ教えていただきたいのですが、 スクリプトを書く場所ですが、『シーン』と『シンボル定義』に書く違いを教えて下さいませんか?

その他の回答 (2)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

#2です。 シーンのタイムラインとムービークリップのタイムライン(シンボルを編集する時に表示されるタイムライン)に設定できるアクションは、機能的には殆ど同じです。書き方もどちらも同じように記述しますし、シーンのタイムラインに書けるスクリプトはムービークリップのタイムラインにも書けます。 ただし、どこのタイムラインに設定するかによって、アクションの働く対象が変わる場合があります。 例えば、シーンのフレーム10に  stop(); と書くと、フレーム10が再生された時点でムービーそのものが停止します。 しかし、同じアクションをムービークリップのタイムラインのフレーム10に設定した場合は、フレーム10を過ぎてもムービーは停止しません。では何が止まるのかというと、ムービークリップの持っているタイムラインがフレーム10(シーンのフレームではありません。ムービークリップのフレーム10です)で止まるのです。 Flash はムービークリップを入れ子にして管理することができます。実はムービー自体が、_root という名前のムービークリップです。この下の階層に自分の作ったムービークリップやボタンなどが入って、1つのムービーとして管理されています。 (これが、シーンでアクションを設定するのと同様の要領でムービークリップでもアクションが利用できる理由でもあります) ムービークリップはそれぞれが独立したタイムラインを持っており、シーンのタイムラインとは別に、独自のアニメを組んだり、内部のフレーム間を自由に移動したりできるようになっています。 先も申しました通り、アクションの機能そのものはどこに記述してもほぼ同じなのですが、どこのタイムラインに設定するかでアクションの働く対象が異なります。 ムービークリップそれぞれに独立したタイムラインがあって、複雑な作品も作りやすい利点はありますが、それだけに、ActionScript は、「どのムービークリップに対する指示なのか?」「どこのムービークリップで定義されている関数・変数なのか?」という指定にはうるさい作りになっています。特に指定がなければ、アクションを設定したムービークリップが対象になったり、そのムービークリップで定義された関数や変数のことを指していると見なされます。 まとまっていない回答で申し訳ありませんが、ご参考までに。

dancepartner
質問者

お礼

またまた詳しく、ありがとうございます。 書かれていることを頭に入れて、少しづつ試してみようと思います。また新たな難関にぶつかったら、 その時はまた投稿しますので、良い知恵をご伝授いただけたらと思います。

回答No.1

フレームアクションはその通りフレームに記述しますよね。例えばあるフレームAが読み込まれたらフレームBに飛ぶような処理をしたいとします。 その時にムービークリップにアクションを記述すると ムービークリップzを製作し、zに記述するアクションは onClipEvent(load){   _root.gotoAndPlay(100); } となります。それに対してフレームに記述すると Aをキームレームとし   _root.gotoAndPlay(100); と記述すれば終わります。 この2つはしている処理は同じことをしています。 違いはムービークリップに記述する場合はアクションを興さすためのムービークリップが1つ必要になります。 当然Flashで読み込ませるために何Kbかでも重くなってしまいます。記述するアクションも長い為にミスがしやすくなります。 フレームアクションですとアクション用のレイヤーを一つ作りそこにフレームアクションを記述していけばいいので,管理がしやすくなります。 大体こんな感じですかね。言葉で書くと分かりにくいので一度ご自分で試して見るのが一番いいと思いますよ。 失敗は成功の元です。頑張って下さい。 参考URLにフラッシュのサイトがいくつか載っていますのでよければどうぞ

参考URL:
http://www12.plala.or.jp/llink/
dancepartner
質問者

お礼

詳しくありがとうございました。 “習うより慣れろ”って感じですね。 いろいろなスプリクトを見て、違いを見つけようと思います。

関連するQ&A

  • Flashでボタンをつくっているのですが、actionscriptをつ

    Flashでボタンをつくっているのですが、actionscriptをつかってボタンをクリックさせたいのですが、アクションパネルのところに「現在の選択範囲にアクションを割り当てることはできません。」と表示されてしまいます。 参考書に附属されているflaをみたところ、Actionscript1.0、2.0となっているのですが、作成しているのはActionscript3.0で作っています。 ====== on (release) { /*↑ボタンが押されて離されたら*/ _parent.gotoAndPlay("about"); /*↑「about」ラベルへ移動*/ } ====== このようなscriptをいれたいのですが、うまくいきません。 ムービークリップでボタンを作るまではできました。その後、何かが抜けているのかして上記のようなエラーがでます。 flash初心者のため、どういう風に書いて質問させていただいたらよいのかわからないのですが、参考flaと見比べたときに「シンボル定義」のなかにあるムービークリップがひとつたりませんでした。(このムービークリップは「navigation」というものですのでそれがありません。) 質問するにはあまりにも情報が少ないかもわかりませんが、何卒ご教授いただけると大変助かります。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flashでロールオーバー中は・・・

    教えてください、Flash初心者です。FlashMX2004を使用しています。 1つのFlashファイルの中に、A,B,C,D,Eの5つのムービークリップがあります。メインのタイムライン上にはその5つのムービークリップを置いています。Aムービークリップの最後のフレームには「_root.gotoAndPlay("B");」というスクリプトがあり、BムービークリップにはCへ、CにはDへ・・・というように、何のアクションも行わなければ、AからEへ順次ムービーが進んでいく、というものです。また、それぞれのムービークリップには、それぞれ他のムービークリップへ自由にジャンプできるようにボタンも設置しています。Aムービークリップに置いてあるCボタンにロールオーバーすると、Cムービークリップの再生が始まる、という具合です。 で、ここで質問なんですが・・・今の状態であれば、例えばボタンでA ムービークリップからCムービークリップへジャンプすると、Cムービークリップへ行くのですが、Cの再生が終わると、自動的にDムービークリップへ移動します。(もちろん、そうなるようにしてるのですが・・・)ただ、ボタンで別のムービークリップへ移動した時だけは、そのムービークリップの再生後もそこでstopさせておきたいのです。 矛盾してるようですが、whileとかifとかを使えばできるのでしょうか??

  • Flash フレームを指定してムービークリップ再生

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

    • ベストアンサー
    • Flash
  • FLASHのボタン

    FLASH8で、ホームページのメニューボタンを作っております。 デザインとしては、 (1)ボタンに、マウスカーソルを乗っけると、 (2)そのボタンが、”クルクルと2回転し停止”する ※”クルクルと2回転して停止”が終わる前に、 マウスカーソルをそのボタンから離しても、 その”クルクルと2回転して停止”というムービー(アクション?)はきちんと最後まで再生させる ようにしたいと思っております。 ”2回転させて停止”させるまでは、ムービークリップの、 最初のフレームに『start();』を、 最後のフレームに『stop();』のactionscriptを入れることでなんとかできるようになったのですが、 どうしても、上記の※の部分が出来ません・・・ マウスカーソルをボタンから離すと、”クルクルと2回転して停止”が完了する前に、ピタッと、最初の静止した状態のボタンに戻ってしまいます。 どなたか、解決法を教えていただけないでしょうか。

  • FlashのActionScriptについて

    FlashのActionScriptについて Flash CS4(AS2.0)を使用 Flashに関しては初心者で、色々な参考書を見ている中で、 AkutionScriptの書き方に色々なパターンがあって分からなくなりました。 アクションを書き込む際、 (1)専用のActionScriptのフレームを作成してそこに書く (2)ボタンインスタンスに書く (3)対象のシンボルのフレームに書く 上記3つの方法はそれぞれどのような違いがあるのでしょうか?又、どのようにして 使い分けするのでしょうか?

  • イージング&アルファが上手くいかない

    FlashMXで「再生」ではちゃんとイージングとアルファができているのに、ムービープレビューでは上手く表示できません。 ボタンを押すと、アクションスクリプトで次のフレームに飛び、そこからイージングとアルファで施された文字(ムービークリップシンボル)が動くと言うものなのですが…。何がいけないのかお分かりの方はお教え下さい。

  • FlashのActionScriptについて質問です。

    FlashのActionScriptについて質問です。 Flash CS4のAS2.0を使用 ActionScriptの書き方で (1)ボタンインスタンスに書く (2)対象のインスタンスのフレームに書く (3)ActionScript専用のフレームを作成しそこへ書く 参考書等を読んでいるとActionScriptを書くときに、上記3つの方法が あり混乱しています。 それぞれ、どのような違いがあるのでしょうか?また、どのように使い分けるのでしょうか? Flashに関しては、始めたばかりの超初心者です。どうぞ宜しくお願いします。

  • Flashのムービー上のボタンからブラウザを閉じさせる

    こんにちは FlashのActionScriptは初心者です。 いつも勉強させていただいております。 Flashのムービー上のボタンの クリックイベントから ムービーがのっている、 ブラウザのウインドウを閉じさせる ことはできるのでしょうか? よろしくおねがいたします。 *********************** FlashMX IE5.5以上

  • gotoAndPlayで反応がありません。

     ムービークリップ内のボタン(ボタンは複数存在しています)[プルダウンメニューを作成しました]に対して、 on (release) { gotoAndPlay("フレーム番号"); } と記述し、フレーム移動をさせようとしたのですが、 反応がありません。 Flashを使い始めてまだ間もなく、アクションスクリプトも初心者です。 フレームアクションは、キーフレームに設定しないといけないと参考書に書いてあったのですが、そうするとムービークリップ内のボタンには、gotoAndPlayの使用はまちがっているのでしょうか? フレームアクションではないのですが、同じ部分に on (release) { getURL("**.html"); } と記述すると問題がなく動きます。 過去の質問も読んでみたのですが、どの質問が自分の疑問に当てはまるかよくわかりません。 どなたかご教授願います。 以上の文章で理解しにくければ、追記致します。

    • ベストアンサー
    • Flash
  • ActionScriptでボタンをクリックしたときの動作をまとめて指定したい

    FlashMX2004で、メニューを作成しています。 ボタンの数が多いことから、いちいち一個ずつのボタンにクリックしたときの動作(getURL)を指定するのが大変なので、一番最初のフレームにActionScriptで指定したいのです。 確か、以前そういうのをやった記憶があるのですが、 とても急いでいるので調べる時間がありません。 複数のボタンが、一番上の階層にあるもの(メインメニュー)と、ムービークリップ内に配置したサブメニューと様々あります。 それぞれの指定の仕方を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう