• ベストアンサー

画面上にランダムでムービークリップを登場させたい

3つのキャラクターを画面上にランダムで (5秒間出て、20秒間画面に出ないでまた5秒間出るなど) 登場させたいのですが、どうすればいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.3

色んな方法があります。 どんな方法を使っても,避けられないのは Math.random() を使うことでしょう。 「Math.random() でランダムな整数を取得する方法」 http://www.macromedia.com/jp/support/flash/ts/documents/fl0173.html これで,ランダムな数を用意して,ランダムな何かをさせるわけです。 Math.random() を使うこと以外の部分は,たくさんの方法があり, コレ! という感じには定まりませんので一例を書いておきます。 大きな流れは, ライブラリのムービークリップを,ランダムにステージ上に呼び出し,呼び出したムービークリップを消す。 これを繰り返す。 というパターンです。 まず3つのムービークリップを用意します。 ステージ上に3つのムービークリップを作ると,ライブラリパネルにもそのムービークリップが表示されます。 ライブラリパネルが表示されていない場合は, 「ウィンドウ」→「ライブラリ」にチェックを入れる でライブラリを表示させてください。 ライブラリの3つのムービークリップのうち1つを右クリックし, 右クリックの項目の中から 「リンケージ」 を選択します。 すると,「リンケージプロパティ」というダイアログが表示されると思うので, リンケージ: □ActionScript に書き出し にチェックを入れてください。 同時に, □最初のフレームに書き出し にもチェックが入ると思いますが, とりあえずは,チェックが入ったそのままで良いです。 そして,その上の 識別子: [                 ] となっている欄に,何か名前を付けてください。 アルファベット+1 という形が良いです。 ここの説明では,「chara1」 と付けておきます。 識別子を入力したら「OK」で閉じてください。 「リンケージとは?」 http://www.1art.jp/flash/le/lessona/lessona.htm ライブラリの3つのムービークリップのうち残りの2つも同様の操作で,違う 識別子 を付けてください。 ここの説明では,2つ目のムービークリップには「chara2」, 3つ目のムービークリップには「chara3」と記入します。 これで,キャラクターの準備はOKです。 次は,このキャラクターをステージ上に登場させては消す部分のスクリプトの作成です。 >> (5秒間出て、20秒間画面に出ないでまた5秒間出るなど) この時間制限が若干難しいですね。 時間制限が難しいと思ったら,タイムラインを使います。 せっかく Flash にはタイムラインというものがあるのですから,これに頼らないのはもったいないです。 だいたいそれが簡単に確実に行く方法です。 3つのキャラクターをステージ上に登場させては消す司令塔のようなムービークリップを作ります。 ムービークリップのタイムラインのフレームのスクリプトを使って,キャラクターの出し入れをします。 まず,ステージ上に透明な塗りで 5mm くらいのムービークリップを作ってください。 そのムービークリップの中の編集に入ります。 透明なムービークリップの中のタイムラインをフレームの挿入で,200フレームくらいにしてください(とりあえず適当で良いです)。 そして,タイムラインの フレーム1 のスクリプトとして以下のようなものを書きます。 ------------------------------------------- //変数 a に 1~3 の整数をランダムでセット var a = Math.floor(Math.random()*3)+1; // _root に 識別子 "chara"+a を // "chara" というインスタンス名で 呼び出す _root.attachMovie(["chara"+a], "chara", 0); // "chara" の x座標とy座標を設定 _root.chara._x = 100; _root.chara._y = 150; ------------------------------------------- わかりますか? Math.floor は,小数点以下を切り捨てると言うことです。 詳細は最初の「Math.random() でランダムな整数を取得する方法」を参考にしてください。 これで,変数 a に 1~3 の乱数が入りますから, attachMovie で 識別子 "chara"+a つまり, "chara1" ~"chara3" のうち何れかがステージ上に呼び出されます。 attachMovie についての詳細は,2つめの「リンケージとは?」を参考にしてみてください。 これは,(x , y)=(100 , 150) という一定の場所に配置するパターンです。 場所もランダムが良ければ,こんな感じになります。 ------------------------------------------- var a = Math.floor(Math.random()*3)+1; var b = Math.random()*Stage.width; var c = Math.random()*Stage.height; _root.attachMovie(["chara"+a], "chara", 0); _root.chara._x = b; _root.chara._y = c; ------------------------------------------- 変数 a~c にそれぞれ条件付きの乱数をセットして, それぞれの場所に当てはめます。 ここまでで, _root にキャラクターを呼び出すまでが完成しました。 次に消す部分です。 この透明なムービークリップのタイムラインの フレーム60 をキーフレームにしてください。 その フレーム60 に次のようなスクリプトを書きます。 ------------------------------------------- // インスタンス名 chara のムービークリップを消す _root.chara.removeMovieClip(); ------------------------------------------- 以上です。 これでパブリッシュすると,ランダムなキャラクターがステージ上に出ては消えるものができます。 透明ムービークリップのフレーム数を 200 にしたり, フレーム60 に ムービークリップを消すスクリプトを入れていますが, タイミングが悪いと思ったら,キーフレームの場所やフレーム数を変えてもらうと,好みのタイミングで出たり消えたりすると思います。 上記説明では,リンケージを使いましたが, 別に使わなくても良いわけで, Math.floor(Math.random()*○) でランダムなフレームに飛んでも良いと思います。 色んな方法を考えてみてください。 一応上のものは Flash MX 以上ではできます(多分,Flash5 でもできると思います)。

mii10
質問者

お礼

丁寧な回答ありがとうございます。 なんとか出来ました! ほんと参考になりました。ありがとうございます。

その他の回答 (2)

回答No.2

 flashを始めたばっかりで分からないことだらけだと思いますが、漠然と「分かりません」では残念ながら解答の方法がありません。T-T 「どこまで理解しているのか?」「具体的にどこが分からないのか?」というのを提示していただかないと・・・T-T  とりあえずまったくの初心者ということを前提に説明しますと 0.本屋に行ってFlashの入門書を手に入れる  1.Flashの簡単な使い方を覚える  2.ActionScriptを覚える  下記のURLも参考になるかと思いますのでご覧ください。始めたころは本当にどうしていいのか分からないと思いますが、やってみると楽しいものですよ。がんばってください。

参考URL:
http://hfm-kenchan.com/index.html
mii10
質問者

お礼

アドバイスありがとうございます。 時間がなかったので聞いてしまいました。 すみません。

回答No.1

 mii10様が、どの程度知識があるのかわかりませんし、Flashのバージョンも解りませんが、ActionScriptを使えば簡単にできると思いますよ。 乱数で3つのキャラクタを選んで5秒間表示させて5秒だったら非表示にして20秒カウント.... とう手順でできますが・・・。 乱数については下記URLをご参考にしてください。

参考URL:
http://www.macromedia.com/jp/support/flash/ts/documents/fl0173.html
mii10
質問者

お礼

アドバイスありがとうございます。 バージョンは8で、flashは始めたばかりです。 URLを見たのですが、わかりませんでした・・すみません。

関連するQ&A

専門家に質問してみよう