A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
あるはずの変数が参照できない理由には、いくつか原因が考えられます。
まず1つは、変数を呼び出そうとしたフレームで、ムービークリップが既にステージから消えてしまっている場合です。
例えば clip というムービークリップが、フレーム1~5までステージに存在しているとします。
clip が持っている変数は、フレーム1~5までの間ならば、メインのタイムラインやフレーム1~5に存在する他のインスタンスからでも参照可能です。
しかし、フレーム6以降は clip はステージから消えます。この時、clip が持っていた変数も一緒に削除されてなくなってしまいます。
_root はムービーそのものを指します。ムービーが再生されている間は消滅することがないので、_root に定義した変数や関数は、フレームやシーンを移動しても消えません。
clip がステージから消えた後(この例ではフレーム6以降)も clip が持っていた情報を利用したい時は、その情報を _root に用意した変数にコピーし、事前に保存しておくといった方法があります。
2番目の理由としては、変数を参照しようとしたタイミングと、ムービークリップの中で変数が定義されるタイミングが合わない場合です。
例えば、先の clip が 10 フレームでできたムービークリップで、clip のフレーム 10 で変数 a が定義されるとします。
メインのタイムラインのフレーム1で a を参照するスクリプトを書いたとすると、このスクリプトが実行される時点では clip のフレーム1が再生されており、この変数はまだ定義されていません。
この場合はどうにもなりませんので、a をもう少し早いフレームで定義するか、呼び出すタイミングを遅らせる、あるいは、他のフレーム間をループして a の値を監視するスクリプトを何度も繰り返し、undefined である間はループ・ undefined でなくなった時先に進む、といった方法で対処してください。
なお、ムービークリップの load イベントを利用して定義した変数は、処理の速度や順番の問題で、ムービークリップがステージに登場するフレームでは利用できない(未定義扱いになる)場合があります。
この場合は、変数を呼び出すフレームを1つずらすことで呼び出せるようになります。
同じシンボルから作られたインスタンスでも、キーフレームが変わると別のものになります。
例えば、フレーム1~5までは clip1 、フレーム6~10までは clip2 というインスタンスが、ステージに存在しているとします。この2つは同じムービークリップシンボルから作られたインスタンスです。
同じシンボルから作られたインスタンス同士であっても、clip1 の持っている変数と clip2 が持っている変数は別のものです。
clip1 が持っていた変数は、先述の通り、clip1 がステージからなくなると同時に消えてしまいますので、フレーム6以降では利用できません。
たとえ、フレーム6から登場するムービークリップに同じく clip1 という名前を付けたとしても、これはフレーム1~5まで存在していた clip1 とは別のものです。前の変数等も初期化あるいは上書きされ、値が変わっています。
このような場合も、先の例と同様に、必要な値を _root の変数に予め保存しておくことで、いつでも参照できるようになります。
それから、よくあるパターンが、ターゲットパスの誤りです。
何かのムービークリップの入れ子になっているムービークリップは、
_root.親のインスタンス名.自分のインスタンス名.変数名 = ・・・
となります。
大文字・小文字・名前の間違いなど、些細な間違いがないか、ご確認ください。
ムービークリップのターゲットパスが分からなければ、自動で挿入する機能もあります。
Flash MX 以降をお使いであれば、「アクション」パネルの上部に、いくつかアイコンが並んでいるかと思います。中央のアイコンが、ターゲットパスを挿入する機能です。リストから対象を選ぶだけで、ターゲットパスが挿入されます。
大体思いつく原因はこんなところですが、該当する点・思い当たる点がありませんでしょうか。
No.1
- 回答日時:
一番手っ取り早いのが、_global変数を使うのが早いと思います。
(_global変数はswfファイル内すべてのステージ・ムービークリップで有効)ただ、注意しなければならないのは
_global.vx
と
vx
とは違う変数なのですべて書き直すことが必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 時間を語るなら、(複数の時間の正体)を知る必要が有る。 1 2023/02/16 22:14
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- 物理学 光速度に近い速度で移動しても、時間や時計の動きが遅くなる?等は、あり得ない。 3 2022/09/24 00:47
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- 数学 2変数日分についての質問です。 なぜtでの微分が、なぜそのように移動することができますか。 h, k 4 2022/09/25 23:27
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Excel(エクセル) エクセルの質問です 3 2023/07/16 17:33
- 写真・ビデオ iPhoneで撮影した動画の画角をキープした状態で容量を減らす方法。 3 2022/09/25 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面全体にマスク
-
長方形がランダムに消えるやつ
-
フレームでページ分かれていて...
-
Flashで右クリックメニューにつ...
-
C言語 バッファについて。
-
C#でDLLファイル読み込みを行う...
-
Flashファイルのループ再生方法
-
URLを隠す、または別アドレスな...
-
FLASH上でインラインフレームみ...
-
車の運転時のメガネ 縁なし(...
-
ハードディスク DVD 読み...
-
Directshowを使って動画を画像...
-
2Dゲーム作成する際、アニメー...
-
A.S 3.0 キーボードでのフレー...
-
三角形ABCのBを可変にしたい
-
FlashMX フェードアウト
-
ムービークリップの位置と角度...
-
フレーム内のオプションボタン...
-
メガネのフレームが半分に折れ...
-
VBで動的に作成したパネルの上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FLASH liteで選択したグラフィ...
-
スライドバーを使って画像を変える
-
ロールオーバーしたボタンは押...
-
Flash Lite 1.1で、複数のMCをA...
-
Flash8 チェックボックスのラベ...
-
Flashで一部レイヤーだけループ...
-
Flashでタイムライン表示割合を...
-
flashボタンオーバーで残像を残...
-
フラッシュで作る地図
-
時計がついたスライドショーが...
-
Flashロールオーバーボタンと画...
-
flash mxで処理を待機させてお...
-
Flashで右クリックメニューにつ...
-
フレーム内に移動したい
-
ソーラーパネルのアルミフレー...
-
HPを作りたい
-
【C#】wavファイルの複数同時再生
-
phpで音を鳴らす
-
ドロップフレームの計算をエク...
-
フレーム内のオプションボタン...
おすすめ情報