![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
satokichi | Åê¹ÆNo.41705 投稿日時: 2009-3-9 17:29 |
新米 ![]() ![]() 居住地: 投稿: 2
使用環境:
|
フレーム移動をしてすぐ、クラスを読み込むと 初めて質問をさせて頂きます。
不慣れなAS3に悪戦苦闘しておりまして、行き詰まってしまいました。 ドキュメントクラス内で、gotoAndStop("main"); でフレーム移動し、その"main"フレームで初めて登場するMovieClip「mc」を引数にインスタンスを作ると、そのMovieClipがnullになってしまい実行されないという現象が起こっています。 //mainラベルに飛ばす gotoAndStop("main"); //そのフレームから登場するmcを引数にインスタンスをつくる。 var main:Main = new Main(mc); 現状は、"main"フレームに直接インスタンスを作成するか、 gotoAndStop("main")を実行するフレームまでMovieClip「mc」をのばし、visible を消すなどして対応しています。 EnterFrameで"mc"を監視し、「nullではなかったら」インスタンスをつくるという方法もためしてみたのですが、スマートではないかなと。 何かよいイベントや方法があれば是非ご教示ください。 よろしくお願い致します。 |
野中文雄 | Åê¹ÆNo.41709 投稿日時: 2009-3-9 18:16 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
![]() ![]() ![]() |
Re: フレーム移動をしてすぐ、クラスを読み込むと Flash Playerはフレームを基本単位として処理します。そして、ドキュメントクラスの初期化は、メインタイムラインの第1フレーム(の直前)で行われます。その実行中に再生ヘッドを幽体離脱させて別フレームに送り、その別フレームのインスタンスを処理しようとすると、予期せぬ結果を招くおそれがあります。
したがって、スクリプトの実行フレームと操作対象のフレームは一致させることをお勧めします。つまり、スクリプトが実行されているフレームにインスタンスを配置もしくは生成するか、再生ヘッドが(通常の再生により)インスタンスの存在するフレームに移動するのを待って処理するかでしょう。 引用: satokichiさんは書きました: |
satokichi | Åê¹ÆNo.41712 投稿日時: 2009-3-9 20:08 |
新米 ![]() ![]() 居住地: 投稿: 2
使用環境:
|
Re: フレーム移動をしてすぐ、クラスを読み込むと ご回答ありがとうございました!
素直に、実行フレームで操作するのが一番なのですね。Flashに逆らわないように対処していこうと感じました。 対応して頂いてありがとうございました。 またよろしくお願いします。 |
永井勝則 | Åê¹ÆNo.41730 投稿日時: 2009-3-10 22:19 |
職人 ![]() ![]() 居住地: 白馬村 投稿: 796
使用環境:
![]() ![]() |
Re: フレーム移動をしてすぐ、クラスを読み込むと 実験をしてみました。
Flash CS3のFLAファイルのメインのタイムラインのフレーム20に someNameというムービークリップを置きます。 このFLAファイルのドキュメントクラスをMainに設定します。 Main.as
Some.as
このFLAファイルをプレビューすると、 Mainクラス 20 null Someクラス TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 というエラーが発生しました。 次にこのFLAファイルをFlash CS4で開き、パブリッシュ設定をFlash Player 10に変えて 別名で保存し、プレビューしました。 するとエラーは発生せず、以下が出力されました。 Mainクラス 20 [object シンボル1] Someクラス someName ちなみに[object シンボル1]の部分はMain.asの trace(someName)をtrace(someName.name)に変えると、 someNameが出力されます。 以上の実験の設定が最初の質問と同じならば、行き先のフレームにあるムービークリップがnullになるのはFlash Player 9のの不出来のせいだろうと思います。 とはいえMainクラスが生まれ出ようとしている最中に別のフレームに飛ばしてそこで何かしようとするのは、やはりよくないと思います。 たとえがよくないですが、生まれる赤ん坊のへその緒を切らないうちに、抱き上げるようなものかと。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |