メイン コーダーズルーム【スクリプト系】 MovieClip.loadMovieでロード待ち後の変数取得 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
miyaj | Åê¹ÆNo.23830 投稿日時: 2006-2-17 10:37 |
新米 居住地: 投稿: 13
使用環境:
Win7 FlashCS5 |
MovieClip.loadMovieでロード待ち後の変数取得 MovieClip.loadMovieで、swfをロードし、ロード待ち後にロードしたswfより変数取得について教えてください。
環境はWinXPsp1で、今回はFlashMX2004/ActionScript2.0を使用し、FlashPlayer6でパブリッシュしております。 loadMovieで特定のMCにswfをロードし、ロード待ちを行った直後、ロードしたswfのルートタイムラインに設定された変数値を取得しようとしましたが、undefinedとなり取得できませんでした。 ロード待ちを行った直後はタイムラインが進んでおらず、タイムライン1フレーム目に設定した変数は取得できないということでしょうか。 _widthや_heightなら取得できるかと思い、同様のタイミングで取得を試みましたが、0となってしまい、正常に取得できていないようです。 以下のようなスクリプトをクラスファイルに書いております。
ロード完了した時点で変数を取得する方法はないでしょうか。 よろしくお願いいたします。 |
森 なおき | Åê¹ÆNo.23842 投稿日時: 2006-2-17 16:49 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: MovieClip.loadMovieでロード待ち後の変数取得 なおきです。
まずActionscript2.0で記述されているなら FlashPlayer7以降で書き出すことが推奨されます。 一応、エラーなくplayer6形式でも書き出されますが 動作しないことも多くあります。 またPlayer7以降ならばMovieClipLoaderClassを 利用することも検討されてはいかがでしょうか?
|
miyaj | Åê¹ÆNo.23847 投稿日時: 2006-2-17 19:20 |
新米 居住地: 投稿: 13
使用環境:
Win7 FlashCS5 |
Re: MovieClip.loadMovieでロード待ち後の変数取得 ご回答ありがとうございます。
引用: まずActionscript2.0で記述されているなら 一応はヘルプで調べつつ、Player6で使用できるもののみ使用して作っています。 それとも、クラスファイルを作成してPlayer6で書き出すと動作しない場合があるのでしょうか。スクリプトはflaのタイムラインに記述した方が良いのでしょうか。 本当はMovieClipLoaderClassを使用できれば良いのですが、 Player6以上に対応させないといけないため、使用しておりません。 今回の件はとりあえずonEnterFrameで1フレーム待つことで、今のところ解決しております。 少しでも早くswfを表示したいので、ロードー終了後すぐに処理したかったのですが、あまり変わらないですかね。 |
野中文雄 | Åê¹ÆNo.23848 投稿日時: 2006-2-17 20:10 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: MovieClip.loadMovieでロード待ち後の変数取得 「ロード待ちを行っ」ていないからでしょう。
1ミリ秒後のターゲットMovieClipは、外部swfをロードする前の状態で、バイト数が0でありません(4以上です)から、ロード前の変数値を取得しています。 引用: miyajさんは書きました: したがって、ロード待ちをするためには、ターゲットMovieClipの初期バイト数を取得しておき、その値よりMovieClip.getBytesTotal()の値が大きいことを判定するか、ターゲットインスタンスのMovieClip._urlの値が変わったことを確認するなどの必要があるでしょう。 もっとも、取得したいのが外部swfの第1フレームで設定されている変数値でしたら、そのフレームアクションの完了を待たなければなりませんので、MovieClip.onEnterFrameイベントで処理を1フレーム遅らせるのが端的だと思われます。 引用: miyajさんは書きました: 「早くswfを表示したい」のですか? でしたら、過剰なsetInterval()関数の呼出しは、Flash Playerの他の処理を遅らせこそすれ、早めることはないと思います。 引用: 少しでも早くswfを表示したいので、ロードー終了後すぐに処理したかったのですが、あまり変わらないですかね。 |
miyaj | Åê¹ÆNo.23879 投稿日時: 2006-2-20 11:26 |
新米 居住地: 投稿: 13
使用環境:
Win7 FlashCS5 |
Re: MovieClip.loadMovieでロード待ち後の変数取得 野中様 ご回答ありがとうございます。
関係ないですが、野中様のサイトや本はいつも参考にさせていただいています。 こんな超有名人にご回答いただけるとは感激です 今回の件、大変よく理解できました。 やはりロード待ちを行ったところで、フレームアクションの完了は待たなければいけないわけですね。 引用: 「早くswfを表示したい」のですか? でしたら、過剰なsetInterval()関数の呼出しは、Flash Playerの他の処理を遅らせこそすれ、早めることはないと思います。 なるほど。このことから、setInterval関数は使わず、onClipEvent(data)で処理するよう変更いたしました。 質問ばかりで申し訳ないのですが、onClipEvent(data)はMovieClipアクションに記述しないといけないですよね?スクリプトの分散を避けたいので、MovieClipアクションには余り記述したくないのですが、クラスファイル内で使用できる同じような方法はないでしょうか。 よろしくお願いいたします。 |
野中文雄 | Åê¹ÆNo.23881 投稿日時: 2006-2-20 12:24 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: MovieClip.loadMovieでロード待ち後の変数取得 まいど、ありがとうございます。
引用: miyajさんは書きました: そのために実装されたのが、MovieClipLoaderクラスなんです。 引用: 質問ばかりで申し訳ないのですが、onClipEvent(data)はMovieClipアクションに記述しないといけないですよね?スクリプトの分散を避けたいので、MovieClipアクションには余り記述したくないのですが、クラスファイル内で使用できる同じような方法はないでしょうか。 もっとも、MXの時代にロード用のクラスを書かれた人は、何人かいらっしゃいます。一番有名なのは、Colin MoockさんのAPIをもとにLoaderClassを作成されたRalf Bokelbergさんでしょう。 helpQLODhelp: 「LoaderClass 1.02 released」 「LoaderClass Documentation」 それをまた、ActionScript 2.0に翻訳した人もあるようです(フランス語なので、内容はよくわかりませんけど)。 in progress「Bokel LoaderClass actionscript 2 translation」 ただ、ここでbokelさんのクラスを覚えたところで、Flash Player 7以降は使う必要がなくなりますから。どうするかは、考えどころですね。あと、LoaderClass内で処理を監視するためには、setInterval()関数が使われているようです。まぁ、「過剰」に使用しなければ、よいでしょう(「過剰」というのは、インターバルの設定で、miyajさんが1ミリ秒を指定されていたことを指しています)。 |
miyaj | Åê¹ÆNo.23897 投稿日時: 2006-2-20 19:33 |
新米 居住地: 投稿: 13
使用環境:
Win7 FlashCS5 |
Re: MovieClip.loadMovieでロード待ち後の変数取得 ご回答ありがとうございます。
引用: そのために実装されたのが、MovieClipLoaderクラスなんです。 全くその通りですね。おかしな質問をしてしまいました。 今回はローダークラスを使わず、このままで行こうと思います。 お答えいただいた皆様、ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |