こんにちは。
困ったので質問させてください。
今、MX2004のFLASHを使ってあるゲームを作成しています。
「XXX」とリンゲージ名をつけたムービークリップを
for(i=0;i<=100;i++){
obj = _root.attachMovie("XXX", "mc"+i, i);//MCの作成
obj._x = table_x[i];//X軸の値の格納テーブル
obj._y = table_y[i];//Y軸の値の格納テーブル
}
で100個のムービックリップを画面上に『mc+連番(以下「mc●●」)』と名前をつけてで作成しました。
この画面上に作成したムービークリップmc●●をクリックするとTraceで「OK」と表示したいのですが・・・
mc1.onMouseUp = function(){
Trace("OK");
}
mc2.onMouseUp = function(){
Trace("OK");
}
mc3.onMouseUp = function(){
Trace("OK");
}
・
・×97回
・
この様にmc●●と同じ数だけ100回同じような文を記述する方法しかないのでしょうか?
個人的には
『eval("_root.mc"+i)』を利用して同じような構文は削除したいのですが良い方法が思いつきません。
何か良い方法がありましたらご教授ください。
お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
どこがわからないのかが疑問である質問ですが。
まず,eval などを使わなくても次のようにすればできますよね。
for (i=0; i<=100; i++) {
obj = _root.attachMovie("XXX", "mc"+i, i); //MCの作成
obj._x = table_x[i]; //X軸の値の格納テーブル
obj._y = table_y[i]; //Y軸の値の格納テーブル
obj.onMouseUp = function() {
trace("OK");
};
}
しかし onMouseUp を使うと,
すべてのムービークリップが一斉に反応して大変なことになってしまいますから,
普通は onMouseUp ではなくて onRelease だと思います
obj.onMouseUp = function() {
trace("OK");
};
↓変更では?↓
obj.onRelease = function() {
trace("OK");
};
ここからが本題ですが,
> 『eval("_root.mc"+i)』を利用して同じような構文は削除したいのですが
単にこのようにすれば良いだけではないでしょうか↓?
for (i=0; i<=100; i++) {
eval("_root.mc"+i).onRelease = function() {
trace("OK");
};
}
しかし,これはあまり使われません。
#1 の方の書かれていらっしゃるように,
for (i=0; i<=100; i++) {
_root["mc"+i].onRelease = function() {
trace("OK");
};
}
のようにするのが普通です。
eval というスクリプトを使うことさえわかれば,
ヘルプを検索するとこのようなことはわかると思いますよ。
普通は eval さえわからないので調べようがなくて同様の質問をされている場合が多いです。
またそれであれば質問する意味も理解できます。
しかしなぜ 「『eval("_root.mc"+i)』を利用して…」 までわかっていて,
上のことができないのかがよくわかりません。
---------------------------------
なお,
eval や 配列アクセス演算子 をわかっていても,
trace("OK");
ではなく,
trace(ムービークリップごとに違うことば);
を出力させたい場合は,ひょっとしたら困ることがあるかもしれません。
そのような場合はこのようにすれば対処できます↓。
// ことばの値の格納テーブル
table_kotoba = ["あ", "い", "う", "え", "お", "か", "き", "…"];
for (i=0; i<=100; i++) {
// 動的に変動するMC内の変数に各ことばを代入
_root["mc"+i].kotoba = table_kotoba[i];
_root["mc"+i].onRelease = function() {
trace(this.kotoba);
};
}
No.1
- 回答日時:
obj._y = table_y[i];//Y軸の値の格納テーブル
の下に追加して下さい。
_root["mc"+i].onRelease = function(){
Trace("OK");
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- スピーカー・コンポ・ステレオ MCカートリッジのオススメを教えてください。 お時間割いてくださりありがとうございます。 当方、現在 10 2022/07/04 14:20
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- プリンタ・スキャナー 「用紙が違う」メッセージが頻発 4 2022/08/22 08:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
縦横比率のを変えずに画像のサ...
-
UWSCのBTN関数について。
-
FlashからPHPへの変数の渡し方...
-
プログラミング、アーキテクチ...
-
pythonの画像の貼り付けについて
-
アセンブリ言語のcasl2について...
-
else if文の順序を変えることに...
-
MovieClip(root)について
-
テキストボックスにセルの値を...
-
アクションスクリプト2.0 奇数...
-
C言語でのマウスを移動とマウス...
-
リッチテキストボックスでの書...
-
五芒星は、悪魔崇拝とどういう...
-
attachMovie後のプロパティ参照
-
ムービープレビュー時にエラー...
-
四乗根を英語で言うと・・・
-
ActionScript3.0にて描画させた...
-
Simulinkのサブシステムの完全...
-
シェイプトゥイーンをかける順...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
テキストファイルから読み込ん...
-
Flashで外部jpgファイルをmcに...
-
AS3 mc0~5をまとめて処理する
-
upc 7915と mc7915ctは互換性有...
-
FlashでドラッグしたMCをリセッ...
-
ステージの背景画像のみ拡大縮...
-
縦横比率のを変えずに画像のサ...
-
ラッコって?
-
テキスト入力
-
eval関数を利用して複数の処理...
-
外部SWFファイルを再生バーでコ...
-
看護師です。体温表のマクロを...
-
以下のActionScriptをスッキリ...
-
ランダムに mcを連続attachM...
-
as3 addchildで生成したMCにリ...
-
Flashからリンクする際のconfir...
-
四角形の端っこをドラッグした...
-
Suzukaで一行ニュースティッカ...
おすすめ情報