メイン 迷える子羊の部屋【初心者専用】 onEnterFrameを書く場所で挙動が違う? | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
inu_kt | Åê¹ÆNo.24510 投稿日時: 2006-3-27 17:59 |
半人前 居住地: 投稿: 33
使用環境:
Flash 8 Pro Windows XP |
onEnterFrameを書く場所で挙動が違う? 質問ばかりで申し訳ございません。
以下のスクリプトを実行したのですが、 1フレーム目に書いたときと、2フレーム目に書いたときで 挙動が違います。 var mc2:MovieClip = _root.createEmptyMovieClip("mc2",1); trace("start"); mc2.loadMovie("1.swf"); mc2.onEnterFrame = function () { trace("ok"); } stop(); 1フレーム目に書いたときは、きちんとonEnterFrameに 来るのでokが表示されるのでよいのですが、 1フレーム目を空にして、2フレーム目に書くと、startは 表示されますが、onEnterFrameに来なくてokが表示されません。 他の部分に何もスクリプトがない新規の状態で試したので、 他の部分が影響しているのではないと思いますが、 どうして2フレーム目に書くとonEnterFrameに来ないのでしょうか? どうかアドバイスいただければ幸いです。 よろしくお願い申し上げます。 |
nekoyuki | Åê¹ÆNo.24512 投稿日時: 2006-3-27 18:06 |
半人前 居住地: 大阪府 投稿: 48
使用環境:
FLASH CS3 Professional XP Pro(SP2) |
Re: onEnterFrameを書く場所で挙動が違う? 1フレームに記述した時は
1度しかokがトレースされていないですよね? 1.swfがロードされた時点でonEnterFrameが 使えない状態になったんだと思いますが。 |
nekoyuki | Åê¹ÆNo.24513 投稿日時: 2006-3-27 18:10 |
半人前 居住地: 大阪府 投稿: 48
使用環境:
FLASH CS3 Professional XP Pro(SP2) |
Re: onEnterFrameを書く場所で挙動が違う? ヘルプを読みましょう。
loadMovie (MovieClip.loadMovie メソッド)
|
ひろゆき | Åê¹ÆNo.24514 投稿日時: 2006-3-27 18:12 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: onEnterFrameを書く場所で挙動が違う? 引用:
糸田謙一さんは書きました: 「複数のフレームに同じボタンを表示させたい!」 「ActionScriptでパターンマッチ(正規表現)させたい!」 については、レスをおつけにならないのでしょうか? loadMovie と記述したからと言って、 すぐに外部swfが読み込まれるわけではありませんね。 #詳しくは、nekoyukiさんの投稿をどうぞ。
「FN0307007 - MovieClip.loadMovieで外部ファイルを読込む」 「外部ムービー読み込み時のプロパティ」 も参考まで。 1フレーム目に記述した場合、外部swfを読み込み完了するのが若干遅いために、 "ok"が1回だけ表示されてしまうのではないでしょうか?
|
inu_kt | Åê¹ÆNo.24515 投稿日時: 2006-3-27 18:41 |
半人前 居住地: 投稿: 33
使用環境:
Flash 8 Pro Windows XP |
Re: onEnterFrameを書く場所で挙動が違う? お世話になっております。
>1フレームに記述した時は >1度しかokがトレースされていないですよね? はい。一度しか表示されません。 2フレーム目に記述したときは一度も表示されません。 >1.swfがロードされた時点でonEnterFrameが >使えない状態になったんだと思いますが。 loadMovie()してロードし始めると、必ずonEnterFrameに 来るものではないのでしょうか? ロード状況を把握するために、onEnterFrame内でgetBytesLoaded() などを取得しようと思っていたのですが、onEnterFrame()では できないということですね? 引用されたヘルプは、難しくて、よく分かりませんでした。。 |
inu_kt | Åê¹ÆNo.24517 投稿日時: 2006-3-27 18:53 |
半人前 居住地: 投稿: 33
使用環境:
Flash 8 Pro Windows XP |
Re: onEnterFrameを書く場所で挙動が違う? onEnterFrameは、ロードが完了するとイベントが発生しないのですね。
勘違いしていました。 Flash MXなので、ロード中にgetBytesLoaded()を表示するのは、 フレームのループを使って解決しようと思います。 フレームのループだとスクリプトが長くなるので あまり使いたくなかったのですが、仕方ないのですね。。 ありがとうございました。 |
ひろゆき | Åê¹ÆNo.24521 投稿日時: 2006-3-27 19:32 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: onEnterFrameを書く場所で挙動が違う? 引用:
糸田謙一さんは書きました: 「外部ムービー読み込み時のプロパティ」 は、お読みになりましたか? イベントが発生しないのではなくて、 イベントハンドラメソッドがクリアされてしまうのだと思いますが。 引用: Flash MXなので、ロード中にgetBytesLoaded()を表示するのは、 フレームのループを使わずとも、できますよ。
load_mc に設定したプロパティの一部やイベントハンドラメソッドが使えなくなるというだけですから。 読み込み状況を調べるムービークリップを別に用意してやれば、 onEnterFrame を使うことはできます。
|
inu_kt | Åê¹ÆNo.24526 投稿日時: 2006-3-27 19:56 |
半人前 居住地: 投稿: 33
使用環境:
Flash 8 Pro Windows XP |
Re: onEnterFrameを書く場所で挙動が違う? お世話になっております。
loadMovieのときはそのMCでメソッドが使えないのですね。 >読み込み状況を調べるムービークリップを別に用意してやれば、 >onEnterFrame を使うことはできます。 なるほどです。 早速、 dt = new Date(); var mc1:MovieClip = _root.createEmptyMovieClip("mc1",1); var mc2:MovieClip = _root.createEmptyMovieClip("mc2",2); _root.mc1.loadMovie("1.swf?time=" + parseInt(Math.floor(dt.getTime()))); _root.mc2.onEnterFrame = function(){ trace(_root.mc1.getBytesLoaded()); } stop(); というように、読み込み用のMCと、読み込み状況監視用のMCを分けたら 正しく取得することができました。 これならフレームループを使わないので、スクリプトが すっきりしていいですね。 どうもありがとうございました。 |
inu_kt | Åê¹ÆNo.24530 投稿日時: 2006-3-27 22:58 |
半人前 居住地: 投稿: 33
使用環境:
Flash 8 Pro Windows XP |
Re: onEnterFrameを書く場所で挙動が違う? 本題とは関係ないのですが、onEnterFrameの関数は 戻り値を取れないのですね。 if((_root.mc2.onEnterFrame = _root.func1) == false){ //戻り値が-1だったときの処理 } こんな風に戻り値が取れるといいなと思いました。 onEnterFrameは、そのフレームで実行されるというより、 フレームが再生されるたびに毎回実行されるので、 戻り値を返しても仕方ないのかもしれませんが、、 |
野中文雄 | Åê¹ÆNo.24556 投稿日時: 2006-3-28 19:11 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: onEnterFrameを書く場所で挙動が違う? イベントハンドラメソッドまたは関数について、理解の十分でない点があるのではないでしょうか? 戻り値が取れない訳ではありません。すべての関数は、呼出しを行わないかぎり、戻り値は取れません。イベントハンドラメソッドは、通常スクリプトで呼出しを行わないので、戻り値を利用することができないだけです。 引用: 糸田謙一さんは書きました: 以下のスクリプトは、MovieClip.onEnterFrameメソッドへの代入値を調べているだけで、戻り値は取得していません。
代入文を評価するシンタックスとしては有効ですので、エラーもなく仕様にしたがった動作はします。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |