![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
以前複数のムービークリップを作る方法を
教えていただいたのですが、そのムービークリップ
をボタンにしたいのですがうまく行きません。
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip("mc"+i, i);
var load_mc = _root["mc"+i];
_root.test = load_mc;
var jpg = i+".jpg";
load_mc.loadMovie(jpg);
i = i-1;
load_mc._x = i*200;
i = i+1;
}
onEnterFrame = function () {
for(var t=1;t<5;t++){
var load_mct = _root["mc"+t];
load_mct.onPress = function(){trace(t);
}
if(_xmouse>540 && _root.mc1._x<=-1) {
for (var j = 1; j<5; j++) {
var load_mcj = _root["mc"+j];
load_mcj._x += 10;
}
}
if(_xmouse<10 && _root.mc1._x>=-1*((test*200)-560)) {
for (var j = 1; j<5; j++) {
var load_mcj = _root["mc"+j];
load_mcj._x -= 10;
}
}
}
多分EnterFrameの中に記述するのがおかしい
と思うのですが、いったいどこに記述しないと
いけないのがわからないので、どなたか
ご教授ください。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
No.1ベストアンサー
- 回答日時:
状況全体が良くつかめませんが,
> そのムービークリップ
> をボタンにしたいのですがうまく行きません。
の部分について回答します。
onEnterFrame = function () に関してはとりあえず抜かせてもらうとして,
おそらく次のようにしたいのではないでしょうか(コピペ可)↓
----------------------------------------
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip("mc"+i, i);
var load_mc = _root["mc"+i];
var jpg = i+".jpg";
load_mc.loadMovie(jpg);
i = i-1;
load_mc._x = i*200;
i = i+1;
// ★本当はここで定義したい↓
load_mc.onPress = function() {
trace("あいうえお");
};
}
----------------------------------------
しかし,
load_mc.onPress を定義できないので,
onEnterFrame = function () で定義した。
ということではないかと思います。
これはなぜ定義できないかというと,
定義した後に JPEG がロードされるので,
せっかく定義した load_mc.onPress が破棄されるからです。
プログラミング上は次のような流れでです。
(1) 空のムービークリップを作成
(2) そこに JPEG をロード
(3) そのムービークリップに動作定義
しかし現実はそうならず次のようになります。
(1) 空のムービークリップを作成
(2) そのムービークリップに動作定義
(3) そこに JPEG がロードされる
ロード命令自体は即実行されますが,
実際にロードされるのには時間が必要です。
ムービークリップ内に動作や変数を定義しても,
その後に JPEG が読み込まれると,
すべては JPEG に乗っ取られてしまうので,つまり破棄されてしまうということです。
この件に関して簡単に対処するには,
次のような方法が考えられます。
空の親ムービークリップの中に,さらに空の子ムービークリップを作成して,
その子ムービークリップに JPEG をロードするという方法です。
これだと,子ムービークリップは JPEG に乗っ取られてしまっても,
親自体は残っているので,親の動作定義は残ります↓。
-----------------------------------------
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip("mc"+i, i);
var load_mc = _root["mc"+i];
// ●_root.mc1~4内にさらに my_mc を作成
load_mc.createEmptyMovieClip("my_mc", 0);
var jpg = i+".jpg";
// ●_root.mc1~4内の my_mc に jpg をロード
load_mc.my_mc.loadMovie(jpg);
i = i-1;
load_mc._x = i*200;
i = i+1;
// ★するとここで定義できる↓
load_mc.onPress = function() {
trace("あいうえお");
};
}
-----------------------------------------
実際の時間的流れは次のようになります
(1) 空の親ムービークリップを作成
(2) そこに空の子ムービークリップを作成
(2) 親ムービークリップに動作定義
(3) 子ムービークリップに JPEG がロードされる
その他,
loadMovie でロードするのではなく,
MovieClipLoader クラスのメソッドを使って,
「JPEG のロードが完了次第→動作定義する」
という方法もあります。
loadMovie では,ただ読み込み命令をするだけで,
JPEG などが
「実際に存在するのか」
「読み込み中なのか」
「読み込みが完了したのか」などなどを把握できません。
MovieClipLoader クラスを使うと,
それらのことがわかるので,
「JPEG のロードが完了次第→動作定義する」
ということが可能になります。
この回答では省略しますが参考までに↓。
「MovieClipLoaderクラスについて」
http://www.fumiononaka.com/TechNotes/Flash/FN050 …
Flashゲーム講座&ASサンプル集【ファイルの読み込みについて】
「SWF、JPEGファイルを読み込みたい(FlashMX2004以降)」
http://hakuhin.hp.infoseek.co.jp/main/as/import. …
======================
次に onEnterFrame = function () の方ですが,
すみませんが,これは状況がよくわかりません。
動きが変なような気がします...。
理解することに挫折しました。降参です。
実際に動かそうとされている動きとは全く違うと思いますが,
代わりとなるサンプルを勝手に用意しました。
こんな感じで活用すればいいのではないかという単なる例だと思ってください。
--------------------------------------
// 変数 flag の初期化
var flag = 0;
//
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip("mc"+i, i);
var load_mc = _root["mc"+i];
// ◎各ムービークリップに固有の変数を代入
load_mc.n = i;
// ●_root.mc1~4内にさらに my_mc を作成
load_mc.createEmptyMovieClip("my_mc", 0);
var jpg = i+".jpg";
// ●_root.mc1~4内の my_mc に jpg をロード
load_mc.my_mc.loadMovie(jpg);
i = i-1;
load_mc._x = i*200;
i = i+1;
// ★するとここで定義できる↓
load_mc.onPress = function() {
// flag に 自分自身の n の値を代入
_root.flag = this.n;
// ※次は単なる例 です
// 変数 datum(基準)を自分自身の中心と一致させる
_root.datum = this._x+this._width/2;
};
}
// ※以下は単なる例です
_root.onEnterFrame = function() {
// flag が1であれば
if (_root.flag<>0) {
// 基準となる座標をステージ中央に近づける
_root.datum += (Stage.width/2-_root.datum)/10;
// 各ムービークリップを基準となる座標と並行移動
for (var i = 1; i<5; i++) {
var load_mci = _root["mc"+i];
load_mci._x = 200*i-load_mci._width/2+_root.datum-(200*_root.flag);
}
}
};
--------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript 定積分の近似値を計算する関数composite_newton_cotesをつくりたい 1 2023/01/18 14:09
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript gasについて 1 2022/05/31 21:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ピクチャーコントロールのデバ...
-
VBAユーザーホームテキストボッ...
-
upc 7915と mc7915ctは互換性有...
-
ActonScriptでムービークリップ...
-
ActionScript3のMovieClipについて
-
日本ヒューレット・パッカード...
-
VBAで改行の入ったデータの正規...
-
3つのムービークリップ再生・巻...
-
flash as3 ムービークリップの...
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
vbs 割算のあまり
-
VB6.0で、フォームから、別のフ...
-
VS2008 C# ボタンのテキストを...
-
Flash 外部エディタの読み込み
-
Adobe Flash Player 9 のテキ...
-
チェックボックスのテキストを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
テキストファイルから読み込ん...
-
VBAユーザーホームテキストボッ...
-
縦横比率のを変えずに画像のサ...
-
外部SWFファイルを再生バーでコ...
-
ラッコって?
-
複数ボタンの生成 - actionscript
-
ActonScriptでムービークリップ...
-
コンプトン散乱について
-
addChildで描画した絵(シンボル...
-
upc 7915と mc7915ctは互換性有...
-
ActionScript3のMovieClipについて
-
AS3 mc0~5をまとめて処理する
-
AS3.0 設置した画像を次のラベ...
-
2つの取り込んだ画像を交差さ...
-
flash as3 ムービークリップの...
-
Flashで外部jpgファイルをmcに...
-
3つのムービークリップ再生・巻...
-
日本ヒューレット・パッカード...
-
四角形の端っこをドラッグした...
おすすめ情報