• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:丸いものがボコボコ出てくるようなFlash)

丸いものがボコボコ出てくるようなFlash

このQ&Aのポイント
  • Flashの作り方についての質問です。
  • ムービークリップを使用して、丸いものが大きさがランダムでボコボコ出てくるFlashを作成する方法を教えてください。
  • 作成環境はMacromedia Flash8 ProffesionalとWindows xpです。ASは勉強中です。

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

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

> ムービークリップで○が大→小になるものをつくり、 > ムービークリップ自体をゆらゆらさせながら上昇させていく… > という作成方法で間違いないでしょうか? だいたいはそれで良いと思いますよ。 ただ,「ムービークリップ自体をゆらゆらさせながら」は別になくても良いと思います。 ”まずこういうものを作ります。" をしっかり見てみると,丸いの1つ1つは上に上がっているだけですね。 ゆらゆらしていませんね。 ゆらゆらさせても良いですが,書かれているサンプルの場合はゆらゆらさせていません。 しかし, よくよく考えてみましたが, アニメーションをモーショントゥイーンで作ってしまおうとすると繰り返しが難しいです。 つまりループ再生させるときが難しくなります。 延々とモコモコ出てくる丸いのをモーショントゥイーンで描き続けるのも困難ですし...。 それと, ブラーをかけるのは炎全体でも良いのですが, ブレンドモードの「加算」は,各丸いものにかけなければなりません。 そんなこんなを結局色々考えると, ActionScript で動かさないと困難な気がします(気がするだけですが)。 しっぽさんは, 「こんな感じのことを書いているのではないだろうか?」 と,私なりに解釈して作ってみた物の作り方を書きます。 参考にしてみてください。 まず, 新規ドキュメントを作成して, ステージの背景色を黒にします。 (ステージ下のプロパティインスペクタより 背景を黒にする。) そして, ステージの下の方にオレンジ色の塗りの丸を描きます (真っ赤ではなく赤に近いオレンジです(#FF3300 くらい))。 大きさは 100px × 100px 前後ということにしておきます。 オレンジ色にアルファはかけないでください。 そして, そのオレンジ色の丸をムービークリップに変換すます。 そのオレンジ色のムービークリップを選択して, 「編集」→「コピー」,「編集」→「同じ位置にペースト」で4つぐらい重ねます。 最後に重ねた(一番上の)オレンジ色のムービークリップを選択して, そのムービークリップにインスタンス名を付けます。 この説明では,「fire_mc」 と付けておいたとします。 その「fire_mc」 を含む4つのムービークリップを全て選択して, さらにムービークリップに変換します。 ムービークリップを2重構造にしたわけです。 階層構造を図示すると次のような感じです。  _root   └ ムービークリップ      ├ オレンジ色ムービークリップ「fire_mc」      ├ オレンジ色ムービークリップ      ├ オレンジ色ムービークリップ      └ オレンジ色ムービークリップ そして, その親のムービークリップをダブルクリックして, ムービークリップ内の編集に入ります。 そのムービークリップ内には, 「fire_mc」 を含む4つのムービークリップがあるわけですが, レイヤーを1つ増やして2レイヤーにします。  レイヤー 筆・・|○| ←スクリプトを書く  レイヤー 筆・・|●| ←4つのムービークリップがある その上の新規で作成したレイヤーにスクリプトを書いて行きます。 こんな感じです(コピペ可能)↓。 ----------------------------------------- // BlurFilterクラスをパッケージパスつきで宣言 import flash.filters.BlurFilter; // Arrayインスタンスの作成 var filterArr = new Array(); // BlurFilerインスタンスの作成 var myBlur = new BlurFilter(15, 15, 2); // ArrayにBlurFilterインスタンスを追加 filterArr.push(myBlur); // ArrayインスタンスをMovieClip.filtersプロパティに設定 this.filters = filterArr; // 変数 num の初期化 var num = 0; // // fire_mc にブレンドモード「加算」 this.fire_mc.blendMode = "add"; // // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function() { // num の値に 1 を加算 num++; // // fire_mc を fire_mc1~? の名前で複製 this.fire_mc.duplicateMovieClip("fire_mc"+num, num); // // 変数 ran1 に -30 ~ +30 の乱数を取得 ran1 = Math.random()*60-30; // fire_mc1~? の初期座標を指定 this["fire_mc"+num]._x = this.fire_mc._x+ran1; this["fire_mc"+num]._y = this.fire_mc._y+20; // // 変数 ran2 に 50 ~ 80 の乱数を取得 ran2 = Math.random()*30+50; // fire_mc1~? の大きさを指定 this["fire_mc"+num]._xscale = ran2; this["fire_mc"+num]._yscale = ran2; // // fire_mc1~? にブレンドモード「加算」 this["fire_mc"+num].blendMode = "add"; // // 1フレーム進む時間ごとに実行(動かす) this["fire_mc"+num].onEnterFrame = function() { // 上方向に 10 px ずつ移動 this._y -= 10; // 大きさを小さく this._xscale -= 3; this._yscale -= 3; // 大きさが 5% 以下になったら if (this._xscale<=5) { // ムービークリップを削除 this.removeMovieClip(); //(念のため) delete this.onEnterFrame; } }; }; --------------------------------------------- これでパブリッシュしてもらうと, しっぽさんのものに近い物ができると思います。 ぼかしの量や,小さくなるスピードや,上に上がるスピードなどを調節してもらうと, もっと炎らしくなると思います。 先頭に // の付いたコメント行をなるべく1行1行入れていますから, どうなっているのかは,なんとか理解してみてください。  

bn313
質問者

お礼

大変分かりやすい回答をありがとうございました!! 返信が遅くなり申し訳ありません。 スクリプトも書いてくださったものを参考にしながら勉強したいと思います。 ありがとうございました。

関連するQ&A