こんばんは。
FLASHアクションスクリプトで、以下のスクリプトを利用して、
背景にものが動いているムービーを作りたいと思っております。
↓ライブラリにあるMCをコピーする
http://hakuhin.hp.infoseek.co.jp/main/as/moviecl …
こちらのスクリプトは問題なく動作したのですが、
スクリプトの内容が把握できず、困っております。
3つのご質問がございます。
(1)質問1
シーン1の上部レイヤーに違うオブジェクトを配置しており、
その下のレイヤーに上記のMCを配置しているのですが、
再生すると上記MCの方が上レイヤーのオブジェクトより前に表示されてしまいます。
このMCを最背面に表示させたいと考えております。
(2)質問2
MCの動きをもうちょっと早くしたいと思っております。
(3)質問3
上記サンプルMCでは、左から右へ移動しているのですが、
これを、下から上へ移動させたいと考えております。
スクリプトのどの部分で操作するのか教えていただける方いらっしゃいますでしょうか?
以下、作業環境です。
-----------------------------
WinXP
FLASH8
-----------------------------
どうか、よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> (1)質問1
> このMCを最背面に表示させたい
最下レイヤーのステージ左上のコーナー 座標(0,0) に空のムービークリップを作成&配置し,
インスタンス名を付けて,
その最下レイヤーのムービークリップ内に attachMovie すれば良いと思います。
> (2)質問2
> MCの動きをもうちょっと早くしたいと思っております。
フレームレートを上げるか,もしくは,
eval("_root.meme"+i).dx = Math.random()*1+1;
の数値を大きくすればもっとスピードは早くなります。
> (3)質問3
> これを、下から上へ移動させたい
attachMovie したムービークリップの初期座標を,
ステージ左横ではなく,下の方にして,
eval("_root.meme"+i)._x = -25;
の _x を _y にすれば上に移動します。
あと,書かれていらっしゃるサンプルは,
eval とかいう半使用禁止の古い関数が使われていますし,
全体的にしくみやスクリプトが古ぼけています。
全面的に見なおした方が良いと思います。
///////////////////////////////////////////////////
配布されているサンプルを Flash 8 で開いている状態から説明します。
まず,
[ファイル]→[パブリッシュ設定]で,Flashタブを選択し,
バージョン Flash Player 5 と設定されているものを,
バージョン Flash Player 6 または 7 または 8 に変更してください。
Flash MX (Flash Player 6) 以降は,
onClipEvent (enterFrame) イベントハンドラ ではなく,
MovieClip.onEnterFrame イベントハンドラメソッドが使えます。
これによって,ステージ外の左上にある奇妙な存在の ■ のムービークリップは不要になります。
この ■ のムービークリップを削除してください。
次に最下レイヤーに新規レイヤーを作成して,
その最下レイヤーのステージ上に楕円ツールで小さな● を描きます。
その●をムービークリップに変換します。
そしてその ● ムービークリップ をダブルクリックして,ムービークリップ内の編集に入ります。
次に ● ムービークリップ 内にある ● の塗りを削除します。
これで空のムービークリップが最下レイヤーに作成されたことになります。
任意の場所をダブルクリックして,
_root のタイムラインの編集に戻ります。
上で作成した空のムービークリップは,
○ に + を足した形のものでステージ上に存在すると思いますから,
その ○ に + を足した形のものをステージの左上のコーナーに移動させます。
○ に + を足した形のものにインスタンス名を付けます。
この説明では 「my_mc」 というインスタンス名を付けたとしてきます。
_root のタイムラインに,さらにレイヤーを追加し,
そのレイヤーをアクションスクリプト記入のための専用レイヤーと勝手に決めます。
そのレイヤーに次のように書けば, (1)質問1 が解決できると思います。
-------------------------------------------------
// フレームに書くので onClipEvent(load) は不要です
count = 0;
use = new Array();
for (i=0; i<10; i++) {
use[i] = 0;
}
// onClipEvent(lenterFrame) は撤廃しています
_root.my_mc.onEnterFrame = function() {
count++;
if (count>60) {
count = 0;
for (i=0; i<10; i++) {
if (use[i] == 0) {
use[i] = 1;
// my_mc 内に attachMovie
// 以降の this は _root.my_mc を指します
this.attachMovie("meme", "meme"+i, i);
// eval関数は全廃しています
this["meme"+i]._x = -25;
this["meme"+i]._y = Math.random()*200+50;
this["meme"+i].dx = Math.random()*1+1;
break;
// for文終了
}
}
}
for (i=0; i<10; i++) {
if (use[i] == 1) {
this["meme"+i]._x += this["meme"+i].dx;
if (this["meme"+i]._x>425) {
use[i] = 0;
this["meme"+i].removeMovieClip();
}
}
}
};
-------------------------------------------------
あとは,この原型を基に,
(2)質問2 と (3)質問3 が解決するように変更します。
-------------------------------------------------
count = 0;
use = new Array();
for (i=0; i<10; i++) {
use[i] = 0;
}
_root.my_mc.onEnterFrame = function() {
count++;
if (count>60) {
count = 0;
for (i=0; i<10; i++) {
if (use[i] == 0) {
use[i] = 1;
this.attachMovie("meme", "meme"+i, i);
// 初期座標を変更します
this["meme"+i]._x = Math.random()*350+25;
this["meme"+i]._y = Stage.height+50;
// スピードを速めます 変数名 も一応 dy に変えます
this["meme"+i].dy = Math.random()*2+2;
break;
// for文終了
}
}
}
for (i=0; i<10; i++) {
if (use[i] == 1) {
// y座標の変化に変更します
this["meme"+i]._y -= this["meme"+i].dy;
// yの最少値に変更します
if (this["meme"+i]._y<-50) {
use[i] = 0;
this["meme"+i].removeMovieClip();
}
}
}
};
-------------------------------------------------
と,一応こんな感じにしておきます。
純粋な ActionScript 1.0 形式のスクリプトです。
書かれていらっしゃるサンプルサイト全体的に思うことですが,
スクリプトやしくみが古い物がかなり混在しています。
Flash 8 などではそのまま使用しない方が良い物もかなりありますし,パブリッシュの設定にも注意してください。
思わぬところでトラブル(ハプニング)や不具合が生じる可能性があります。
ActionScript コピペ型 のサンプルではなく,FLAファイル配布型のサンプルですからなおさらです。
この回答では,全く 0 から作成する方法は書いていませんが(書けませんが),
何にも考えずに,バージョンも気にせずに,FLA ファイルを改良使用しようとすると,思いもよらないところでしっぺ返しがくることがありますので要注意です。
わからないスクリプトがあれば1つ1つヘルプで確認&理解して(たとえば eval を検索),
スクリプト全体を理解した上で,最初から自分で作成する方が良いと思います。
「スクリプトの使い方」 や 「考え方」 を身に付けるには,実戦的で良いサンプルがそろったすばらしいサイトだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
flashの背景色(stageの色)を...
-
変数に256文字以上のテキストを...
-
Googleの検索窓をFlashオブジェ...
-
VBScriptでMsgBoxのYesNoボック...
-
楕円の軌道に傾斜をつける方法...
-
photoshopで書いた四角の枠の中...
-
VB6.0で、フォームから、別のフ...
-
CreateDialogについて
-
SNMPの標準MIBについて
-
VBAユーザーホームテキストボッ...
-
全てのテキストボックスをセル...
-
VB6.0のHideのバグ?
-
VBAで改行の入ったデータの正規...
-
画面の範囲選択
-
ランダムに4桁の数字を表示する...
-
Access2000 実行時エラー '3061':
-
PDFからepubに変換するウェブサ...
-
Flash みてください!初心者で...
-
C言語でのマウスを移動とマウス...
-
テキストボックスの中身をリセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FLASH 8 でバケツツールで上手...
-
MCを最背面に表示したい+ムー...
-
マウスオーバーで外部ファイル...
-
onClipEvent の enterFrameとlo...
-
マウスオーバーやクリック時に...
-
ステージの大きさをフィットさ...
-
FLASHでの色変更
-
ブラウザのサイズに合わせてオ...
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
テキストボックスにセルの値を...
-
static関数がmapファイルに載ら...
-
VB6.0 でメニューを作りたいん...
-
【VB.NET】別Formのボタンが押...
おすすめ情報