• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ActionScript ランダムでMC複製、位置、大きさ、角度などを変更させたいのですが)

ActionScriptでランダムなMCを制作する方法

このQ&Aのポイント
  • ActionScriptを使用して、ランダムにMCを複製し、位置や大きさ、角度などを変更する方法について教えてください。
  • Flash8とActionScriptを使用して、特定の動きをするムービーを作りたいと思っています。具体的には、http://namatamago.com/site/work/sample/ver5/Random/Random07.htmlと同様の動きをさせたいです。
  • 上記のサイトで公開されていたサンプルや制作方法がわかるサイトや書籍を教えてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

わかりやすので下の方 「Random07_2.html」 の Flash を考えてみましょうか。 「Random07_2.html」のFlashを見てみて,その Flash を一度クリックし, 「右クリック」→「再生」のチェックをはずしてみます。 すると1個の星がステージ中央から拡大しながら上に向かって動いているもの残って見えます。 本体はおそらくこれ1個で,この1個をActionScriptでたくさん複製しているのだと思います。 まず小さめの★を1個ステージの真ん中あたりに1個描きます。 ★は テキストで "書く" のではなく "描く" 方が良いです。 もしくは ★ を書いて,「修正」→「分解」→「修正」→「分解」でシェイプに分解するかです。 その ★ をグラフィックシンボルに変換します。 さらに,そのグラフィックの★をムービークリップに変換します。 つまり,★はグラフィックシンボルの中にあって,そのグラフィックはムービークリップの中にあるという状態です。  [ [★] グラフィック ] ムービークリップ そのムービークリップをダブルクリックして, グラフィック★ を ムービークリップ内で 拡大させながら上向きにモーショントゥイーンさせます。 実際は縦横斜めと色々な方向に飛んで行くので, モーショントゥイーンさせて動かす距離がわかりませんが,少し長めに動かした方が良いと思います。    ★(大)    ↑    ↑--ステージの範囲をはみ出るくらい    ↑  モーショントゥイーンで動かす    ↑    ★(小) そして ★(大) ←この最終フレームにスクリプトを書きます。 //----------------------------- // このムービークリップを削除 this.removeMovieClip(); //----------------------------- これで,このムービークリップが最終フレームに到達したとき消えます。 消えますが,手動でステージ上に作成したムービークリップは消せません。 ActionScript で深度0以上に複製した物を消すことができます。 この時点でパブリッシュするかムービープレビューをしてみて, ★が繰り返し,拡大しながら上向きに動くかどうか確認しておきます。 そして,「編集」→「ドキュメントの編集」 でドキュメント(メインのタイムライン)の編集に戻ります。 メインのタイムラインは1フレームのみで★のムービークリップがステージ中央付近にあるだけのはずです。 この★ムービークリップを選択して,下のプロパティインスペクタより, ★ムービークリップにインスタンス名をつけます。 インスタンス名は何でも良いですが ここでは,「star」 というインスタンス名を付けたとしておきます。 その 「star」 のあるレイヤーとは別のレイヤーを新規で追加して, その新規で追加したレイヤーのキーフレームに次のような ActionScript を書きます。 //------------------------------------------ // 変数 num の初期値を 0 としておく num = 0; // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function() { // 変数 num に 1 を加算する num++; // star をインスタンス名 star? で深度 num に複製 star.duplicateMovieClip("star"+num, num); // 複製した star? を 360度ランダム回転 this["star"+num]._rotation = Math.random()*360; // 複製した star? のアルファを 50~100 でランダム設定 this["star"+num]._alpha = 50+Math.random()*50; }; //------------------------------------------ これで,よく似たことができると思います。

dcmber
質問者

お礼

大変丁寧にわかりやすくお教えいただきありがとうございます! 頂いた回答を元に試作してみましたが、おかげさまで欲しかった動きが実現できました。 ActionScript内のコメントも大変わかりやすく、数値をいじる程度でいろいろ試せそうでとても嬉しく思います。 ActionScriptの敷居が高く感じられ、なかなか手が出せなかったのですが、ものすごく多彩な動きを数行のスクリプトで表現できるのだな、と改めて感心いたしました。 これを機に、少しずつでも勉強していければと思えました。 本当にありがとうございました。

関連するQ&A

専門家に質問してみよう