FLASHMXで空ムービークリップを作成して
その中に外部SWFを読み込むスクリプトを書いています。
外部ファイルはa0.swfからa10.swfまであるのでそれを全て読み込む為に
空ムービークリップ名を変数で持ちたいのですが
loadmvieの行では変数と認識してくれないようで何も表示されません。
(traceの行の2つの変数は正常に表示されますし
直接ムービークリップ名を入れれば読込もできます)
おそらく下のソースの例だとpart_mcは変数名なのに
そのままムービークリップ名と捕らえられてしまっているようです。
どのようにすれば変数と認識してくれるのでしょう?
for (var i = 0; i<10; i++) {
var part_mc = "a10" + i + "_mc";
var loadfile = "a" + i + ".swf";
_root.createEmptyMovieClip(part_mc, 100+i);
_root.part_mc.loadMovie(loadfile);
_root.part_mc._x = i * 10;
trace(loadfile);
trace(part_mc);
}
アドバイスをお願いします。
No.2ベストアンサー
- 回答日時:
あらためまして。
eval関数を以下のように使用することによって文字列から参照へと変換できます。
part_mc=eval("a10"+i+"_mc");
_root.part_mc._x=i*10;
またその他の方法として#1であるようにevalを用いずに直接
_root[part_mc]._x=i*10;
とする事も出来ます。
これら二つはこの例ではまったく同じ意味ですが
今回問題になるのは
cerateEmptyMovieClipの第1引数は参照ではなく文字列が必要であり、それが配置される場所は文字列ではなく参照でなければなりません。
少しややこしくなってしまいましたが、
はじめにevalを使用してしまうと後のcerateEmptyMovieClipの引数になり得ないので、問題が生じます。
総じてこんな感じだとよいのでは。
for (i=0; i<10; i++) {
part_mc = "a10"+i+"_mc";
loadfile = "a"+i+".swf";
_root.createEmptyMovieClip(part_mc, 100+i);
_root[part_mc].loadMovie(loadfile);
_root[part_mc]._x = i*10;
}
evalを使うのならこんな感じでしょうか。
for (i=0; i<10; i++) {
part_mc = "a10"+i+"_mc";
loadfile = "a"+i+".swf";
_root.createEmptyMovieClip(part_mc, 100+i);
part_mc = eval(part_mc);
_root.part_mc.loadMovie(loadfile);
_root.part_mc._x = i*10;
}
前者、後者とも最終的にpart_mcの中身は
a109_mc
になりますが、前者は文字列で後者は参照になっています。
私の方法の中では最初にお伝えした方法が一番スリムだと思うのですが^^;
他のみなさんの方法をお待ちします。
不適切な表現の折をお許しください。
No.1
- 回答日時:
こんにちは。
>>おそらく下のソースの例だとpart_mcは変数名なのに
そのままムービークリップ名と捕らえられてしまっているようです。
逆の発想ではないかと。^^;
変数の中に格納された文字列がムービークリップとして参照されていないため、その文字列を参照として解釈させなければなりません。
一般的にはeval関数を使用し、文字列を参照に変換しますが、(詳しくは付属のリファレンスで。)、今回のように値を局所変数にするのであれば、変数を使用せずに下記のようにもできますよ。
for (i = 0; i<10; i++) {
_root.createEmptyMovieClip("part"+i+"_mc", 100+i);
_root["part"+i+"_mc"].loadMovie("a"+i+".swf");
_root["part"+i+"_mc"]._x = i*10;
}
早速の回答ありがとうございます。
なるほど、こういう書き方もあるのですね。
何分初心者なもので何を聞いても初耳です。
eval関数について手元のリファレンスで調べてみましたが
使い方が良く分かりませんでした。
実際はもっと複雑なソースなのでなるべく簡素化して表現したいと思っています。
もしよろしければこの例での使い方を教えていただけませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- UNIX・Linux gawk 3 2022/08/18 14:07
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Visual Basic(VBA) 正規表現を用いての並び替え 7 2022/04/04 09:27
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- 物理学 相対性理論のエネルギーについて 3 2023/02/10 15:59
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Windows Me・NT・2000 コマンドプロンプトのdisk partについて 2 2023/03/05 15:49
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- その他(ビジネス・キャリア) 海外から請求書がきたのですがPC/MCの意味がわからないのとそこの数字があってるのかわからなくて海外 2 2022/11/08 11:32
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
音楽を再現できるソフトってあ...
-
audio CDをUSBメモリーに...
-
mp3の音楽ファイルの「アルバム...
-
動画編集のフリーソフトを探し...
-
動画
-
GIMPを使って第三者にサムネイ...
-
画像編集ソフト、GIMPの規約に...
-
動画ファイルの字幕について。
-
動画編集ソフトについて
-
写真をパソコンで簡単に水平補...
-
AIの動画編集について
-
MPGファイルが再生できません(...
-
Photoshopについて詳しい方お願...
-
バナー画像のファイル形式
-
ゆっくりムービーメーカー4、GI...
-
動画編集でAdobePremier Proを...
-
動画編集でAdobePremier Proを...
-
動画加工
-
どのにピー音あってどうやった...
-
約1000バイトの画像を10...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ムービーファイルにおけるOSの...
-
TMPGEncでのswf→avi変換について
-
フラッシュと外部swf
-
adobe cc(プレミア含む)を持っ...
-
動画のキャプチャ
-
携帯動画変換君のトラブル
-
e-taxで送信ファイルの拡張子が...
-
PDFファイルの倍率を変えて保存...
-
サポートされたファイル形式お...
-
個別に違う添付ファイルを付け...
-
Googleマップに保存した地点が...
-
Fortniteのクラッシュについて
-
【VBA】マクロの入ったファイル...
-
A4の紙に印刷されている文字を...
-
エクセルで「特定の文字を含む...
-
ガラケーからPCへの写真の取り込み
-
スマホでtxtファイルを編集する...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
PC内で速度を遅くした音源をCD...
-
エアコンの冷媒 R410Aの重...
おすすめ情報