![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
http://www.gamba-osaka.net/
で使われている、白い長方形がランダムにひらひらと透明になっていくの、どうやって作っているのでしょう。アニメーションでも地道に作ればできないことはないですが、actionscriptで一発でできると聞いたことがあるので、その方法を知りたいです。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
「actionscriptで一発で」ですか…
本当の一発もできないこともないと思いますけど,とてつもない(こともない?)スクリプトになる上,
カスタマイズしにくくなります。
もし本当に一発でするなら,
次の1~4のようなスクリプトを考えて,うまく動作させる流れになると思います。
1 createEmptyMovieClip() で空のムービークリップを等間隔で作成して,
「Flashドキュメンテーション createEmptyMovieClip」
http://livedocs.macromedia.com/flash/8_jp/main/0 …
2 その中に長方形を描いて,
「基本的な図形の直接制御1 」
http://po6.nsk.ne.jp/~snget/flash/f1-2.htm
3 ランダムに
「Math.random() でランダムな整数を取得する方法 」
http://www.macromedia.com/jp/support/flash/ts/do …
4 それらのムービークリップのアルファをonEnterFrameで下げる
「パンダが行ったり来たり」
http://hima.chu.jp/flash/ActionScript/as_4.htm
ActionScript でアニメーションさせる場合,
大半はアニメーションさせるオブジェクトがまずあります。
そして,そのオブジェクトのプロパティ(xy座標,色,深度,透明度など)や変数を変えたり,
そのオブジェクトに stop() とか gotoAndPlay() とか getURL() などという命令をすることによって動かします。
書かれている URL の場合だと,
オブジェクトとは,「白から透明に変わる長方形」のことです。
上記1~4のようにして,
オブジェクト自体も ActionScript で作ってしまうとかえって大変ですから,
ある程度は手作業で用意して,手作業では出来ない部分をスクリプトにする方が良いと思います。
= * = * = * = * = * = * = * = * = * = * = * = * =
以下は私だったらこんな感じにするのではないかという例です。
大きな流れは,
モーショントゥイーン で,白から透明に変わるムービークリップを1つ用意し,
それをコピーでステージ上にしきつめ,
ActionScript によって,
それらのムービークリップがランダムに白から透明になるように
ランダムに play() を開始させるという方法です。
まず,
適当な大きさの長方形の白い塗りを 矩形ツール でステージ上に描きます。
ステージの背景色も白だと見にくいので,
ドキュメントの設定などからステージの背景色を暗めの色にしておく方が良いと思います。
当然背景色は仮のものですから,何色でも良いです。
そして,その白い塗りを,「修正」→「シンボルに変換」でムービークリップにします。
次に,そのムービークリップをダブルクリックして,ムービークリップ内の編集に入ります。
ムービークリップの編集に入ると,
さっき作った白い塗りがあると思うので,
その白い塗りを「修正」→「シンボルに変換」で今度は「グラフィックシンボル」にします。
そして,ムービークリップ内のタイムラインのフレームを伸ばして,20フレームくらいにします。
最終フレームをキーフレームにして,
そのキーフレームのグラフィックシンボルのアルファを 0 にします。
アルファ 0 は 最終フレームのグラフィックシンボル 選んだ状態で,
下に表示されるプロパティインスペクタ(パネル)の右の方で,
カラー:[なし ▼]
となっている部分を
カラー:[アルファ ▼] [0% ]▼
にしてもらうとそのグラフィックシンボルはアルファ 0 になります。
それで,フレーム1 ~最終フレームをモーショントゥイーンでつなぎます。
これで,白からだんだん透明になるムービークリップができあがります。
勝手にスタートやループをしてくれると困るので,
レイヤーを1つ追加し,そのレイヤーの最終フレームもキーフレームにして,
フレーム1 と 最終フレームに「stop();」を書きます。
レイヤーを図示すると次のような感じです。
stop();↓ stop();↓
□ レイヤー 筆・・|○ []|○|
□ レイヤー 筆・・|●>----------->[]|●|
アルファ100↑ アルファ0↑
これで,ムービークリップの準備は終わり。
「編集」→「ドキュメントの編集」などで,メインムービーの編集に戻ります。
上で作ったムービークリップを,コピペで増やし,隙間なくステージ上に並べます。
ステージからはみだすくらいに並べて,
全体を選択して,複数のムービークリップを縮小させ,ステージの大きさに合わせると楽です。
そして,たくさん並んだMC(ムービークリップ)の1つ1つにインスタンス名を付けて行きます。
この説明では「MC1」「MC2」… …「MC?」とインスタンス名を付けたとしておきます。
そして,スクリプトを書くためのレイヤーを追加して,
そのレイヤーに次のようなスクリプトを書けば,
MC1~MC? が,ランダムにスタートしはじめます。
====================================
// 長方形の数を設定(可変)
n = 20;
// MC1~n を フレーム1 で stop させる
for (i=1; i<=n; i++) {
_root["MC"+n].gotoAndStop(1);
}
// 変数 MCNum の初期化
MCNum = 0;
//------重複を許さない順列の作成-(※注↓)-//
// randArrという配列を作成
randArr = new Array();
// randArrの1~nの要素(エレメント)に乱数を取得
for (i=0; i<n; i++) {
randArr[i] = Math.random();
}
// permArrという配列を作成
permArr = new Array();
// permArrの要素を初期化
for (i=0; i<n; i++) {
permArr[i] = 0;
}
// randArr の各要素に入った数の
// 大きさの順を permArr の要素に並べる
for (j=0; j<n; j++) {
for (i=0; i<n; i++) {
if (randArr[j]>=randArr[i]) {
permArr[j] += 1;
}
}
}
//------関数 tellMC の定義------//
function tellMC() {
// 変数 MCNum に1を加算
MCNum++;
// 変数 MCNum が n を越えたら
if (MCNum>n) {
// setInterval を終了
crearInterval(ID1);
// 変数 MCNum が n を越えない場合
} else {
// MC1~n のどれかを gotoAndPlay(2) させる
_root["MC"+permArr[MCNum-1]].gotoAndPlay(2);
}
}
//--- tellMC を ○ミリ秒ごとに実行---//
// 300ミリ秒ごとに実行(可変↓)
ID1 = setInterval(tellMC, 300);
====================================
上のスクリプトの場合,
// 長方形の数を設定(可変)
n = 20;
と,
// 300ミリ秒ごとに実行(可変↓)
ID1 = setInterval(tellMC, 300);
を変えるだけでコピペで使用出来ると思います。
しかしランダムにスタートさせるだけでも,結構大変なスクリプトでしょう。
普通のランダムなら簡単です。
例えば 20 個の MC があったとして,
本当に ランダム関数だけでランダムにスタートさせるともっと簡単なのですが,
それだと,いつまでたってもスタートしない物が出てきたり,何度もスタートするものが出てきてしまいます。
だから上のように重複を許さないランダムな順列を作って,
その順列に従ってMCをスタートさせなければならないので大変です。
スクリプト中の (※注↓) の説明
重複しないランダムな順列の作り方は,
他の方法でもできますが,
一応,他言語でもよく使われる方法でスクリプトを組みました。
配列 randArr には
(0.0464299493469298,
0.804838167037815,
0.113816660828888,
0.867104816716164,
0.604140473529696)
などいう乱数の要素(エレメント)が得られます。
この各要素を比べて,配列permArrに
(1,4,2,5,3)
という小さいもの順の新たなる要素を得ます。
すると,この (1,4,2,5,3) は重複しない順列になります。
なおこの考え方は
岐阜大学総合情報メディアセンター
村瀬康一郎さんの100マス計算のExcelの関数
http://www.crdc.gifu-u.ac.jp/edsoftdb/
を参考にさせて頂きました。
C言語などでもよく使われる方法のようです。
重複しないランダムな順列の作り方は他にもあります。
良かったら次のURLを参考にしてみてください。
「質問:ランダムに数字を並び変える方法は」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=881637
↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=881637
#3の方が,配列の要素を並び替えるという方法で重複をしない順列を作る方法を紹介されています。
上で書いたスクリプトの話に戻りますが,最初の方の
// MC1~n を フレーム1 で stop させる
for (i=1; i<=n; i++) {
_root["MC"+n].gotoAndStop(1);
}
はなぜあるかと言うと,
上で作ったのは1フレームだけですが,
複数フレームを使って,
何回も上のスクリプトを使うとき,
何回もそれぞれの MC をフレーム1でストップさせないとならないからです。
もし上のように1回だけランダムで白い四角が透明になるのでしたら,
// MC1~n を フレーム1 で stop させる
の部分のスクリプトはいりません。
// 300ミリ秒ごとに実行(可変↓)
ID1 = setInterval(tellMC, 300);
に関しては,ここら辺が参考になると思います。
http://hakuhin.hp.infoseek.co.jp/main/as/fps.htm …
余裕があれば,最初に書いた
1 createEmptyMovieClip() で空のムービークリップを等間隔で作成して,
2 その中に長方形を描いて,
3 ランダムに
4 それらのムービークリップのアルファをonEnterFrameで下げる
みたいなスクリプトを組んでみてください。
気が遠くなりそうで私にはできません。
また,スクリプトだけはできたとしても,
どんな状況でも使え,また誰でも理解して使えるように説明するのはとうてい無理のような気がします。
とても詳しい説明ありがとうございました。
おかげさまで上記のActionScriptを使って作成することができました。
ただ、MCの中である2層目に記述すると動きませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(料理・グルメ) わらび餅 透明にしておく方法 形よくする方法を教えてください。 4 2023/05/19 10:13
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- 画像編集・動画編集・音楽編集 画像ファイル作成について 2 2023/06/27 22:28
- 数学 画像の中学2年生の数学の問題について教えていただきたいです。 三角形ADCが二等辺三角形であることと 2 2023/01/29 16:14
- その他(プログラミング・Web制作) GASでガントチャートを作りたいです 1 2022/09/05 17:26
- Excel(エクセル) ランダムで四択の問題を作る場合にvbaで何を学べばいいでしょうか。 1 2022/04/14 16:45
- 野球 球団旗について。 3 2022/09/17 10:39
- その他(パソコン・スマホ・電化製品) 封筒のひな形ありますか? ネット上で、封筒に記入するひな形ワードのやつ手に入れたのですが、なんか大分 1 2022/06/02 09:48
- 宗教学 魂の成長 6 2022/07/17 21:47
- 日用品・生活雑貨 (昔の?)レンタル用DVDケースはなぜあの形状? 1 2023/03/29 19:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マスクの形を自由自在に変えたい
-
Flashで一部レイヤーだけループ...
-
ラジオボタンの作り方
-
Flash lite 1.1で、指定範囲内...
-
フレーム内に移動したい
-
C#でDLLファイル読み込みを行う...
-
車の運転時のメガネ 縁なし(...
-
FLASH CS3 フェードインフェー...
-
gh5のカメラを購入しました、初...
-
オプションボタンを矢印キーで...
-
シーンからムービクリップ内の...
-
【C#】wavファイルの複数同時再生
-
英語で「フレームの右上」
-
Flash・携帯の待受時計Flashを...
-
可愛い無料写メフレームサイト
-
イメージギャラリーの最後まで...
-
フレームをまたいだ背景画像の...
-
外部画像を読み込み、ボタンで...
-
VB6のスクロールバー付きフレー...
-
Flash lite1.0の計算クイズ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ニュースティッカーの作り方
-
Flashでの連打ゲームの作成方法...
-
ロールオーバーしたボタンは押...
-
Flashで一部レイヤーだけループ...
-
画面上にランダムでムービーク...
-
円を描くように動くアニメーシ...
-
Flash lite 1.1で、指定範囲内...
-
パブリッシュで左端が切れます
-
ページ移動する間にMCのアクシ...
-
ラジオボタンの作り方
-
actionscript2.0でMCの切り替え...
-
長方形がランダムに消えるやつ
-
flashでスライド式メニューを作...
-
時計がついたスライドショーが...
-
flashのActionscriptについて
-
プルダウンメニューを作ろうと...
-
【ActionScript】クラス化のメ...
-
ムービークリップを一定時間ご...
-
Flashで四角い図形で切り替わる...
-
ロールオーバーで他の画像を表...
おすすめ情報