「Unity LWF内のインスタンスを取得する」の版間の差分
(→rootに置いてあるインスタンスを取得する) |
(→ムービークリップを取得する) |
||
(1人の利用者による、間の16版が非表示) | |||
1行: | 1行: | ||
− | == | + | ==ムービークリップを取得する== |
− | + | ムービークリップを取得するには<br/> | |
− | + | ||
− | + | ||
<br/> | <br/> | ||
+ | <LWF.Movieインスタンス>.SearchMovieInstance(arg1,arg2);<br/> | ||
+ | *arg1 : string "インスタンス名" | ||
+ | *arg2 : bool "自身の子以外のインスタンスを検索対象にするか" | ||
+ | <br/> | ||
+ | または<br/> | ||
+ | <br/> | ||
+ | <LWF.Movieインスタンス>["インスタンス名"];<br/> | ||
+ | <span style="color:blue">※<LWF.Movieインスタンス>.SearchMovieInstance("インスタンス名", false); と同義</span><br/> | ||
+ | <br/> | ||
+ | を使用します。<br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | しかし、Load()を行った直後はまだLWFの構築が終わっていないため、rootに置かれているインスタンスを取得をすることができません。<br/> | ||
+ | なので、構築完了を待ってから取得する必要があります。<br/> | ||
+ | ※rootの参照は構築前でも可能です。<br/> | ||
+ | <br/> | ||
+ | 【サンプル】<br/> | ||
rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。<br/> | rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。<br/> | ||
− | + | 下記の例だと構築が完了していないためLogにはNullが返ってきます。<br/> | |
− | // | + | //ダメな例 |
+ | (Load処理) | ||
+ | |||
Debug.Log(lwf.rootMovie["chara"]); | Debug.Log(lwf.rootMovie["chara"]); | ||
<br/> | <br/> | ||
− | + | <br/> | |
− | + | なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。<br/> | |
− | + | //良い例 | |
− | + | (Load処理) | |
− | + | ||
− | + | lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) { | |
+ | Debug.Log (lwf.rootMovie["chara"]); | ||
}); | }); | ||
+ | |||
こうすることでcharaインスタンスを参照して制御することができるようになります。<br/> | こうすることでcharaインスタンスを参照して制御することができるようになります。<br/> | ||
− | + | <br/> | |
+ | <br/> | ||
+ | <br/> | ||
+ | |||
+ | ==ボタンを取得する== | ||
+ | ボタンを取得するには<br/> | ||
+ | <LWF.Movieインスタンス>.SearchButtonInstance(arg1,arg2);<br/> | ||
+ | *arg1 : string "インスタンス名" | ||
+ | *arg2 : bool "自身の子以外のインスタンスを検索対象にするか" | ||
+ | を使用します。<br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | 【サンプル】<br/> | ||
+ | rootにbuttonというインスタンス名のボタンが置いてあると仮定します。<br/> | ||
+ | ムービークリップ同様、構築が完了していないとLogにはNullが返ってきます。<br/> | ||
+ | (Load処理) | ||
+ | |||
+ | Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false)); | ||
+ | <br/> | ||
+ | <br/> | ||
+ | なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。<br/> | ||
+ | (Load処理) | ||
+ | |||
+ | lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) { | ||
+ | Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false)); | ||
+ | }); | ||
+ | <br/> | ||
+ | <br/> | ||
<br/> | <br/> | ||
==gotoAndPlayでジャンプするフレームに置いてあるインスタンスを取得する== | ==gotoAndPlayでジャンプするフレームに置いてあるインスタンスを取得する== | ||
− | GotoAndPlay()などでジャンプした先にいかないと存在しないインスタンスはGotoAndPlay()の直後に | + | GotoAndPlay()などでジャンプした先にいかないと存在しないインスタンスはGotoAndPlay()の直後に<br/> |
取得しようとしてもNullが返ってきてしまいます。<br/> | 取得しようとしてもNullが返ってきてしまいます。<br/> | ||
<br/> | <br/> | ||
27行: | 73行: | ||
<br/> | <br/> | ||
下記のコードだとインスタンスを取得することはできません。<br/> | 下記のコードだとインスタンスを取得することはできません。<br/> | ||
− | lwf.rootMovie.GotoAndStop("attack"); | + | lwf.rootMovie.GotoAndStop("attack"); |
Debug.Log(lwf.rootMovie["sword"]); | Debug.Log(lwf.rootMovie["sword"]); | ||
+ | <br/> | ||
+ | この場合、ジャンプしてその先の構築が行われるまで待つ必要があります。<br/> | ||
+ | 下記がサンプルになります。<br/> | ||
+ | lwf.rootMovie.GotoAndStop ("attack"); | ||
+ | lwf.rootMovie.AddEventHandler("render", delegate(LWF.Movie movie) { | ||
+ | lwf.rootMovie.ClearEventHandler("render"); | ||
+ | Debug.Log (lwf.rootMovie["sword"]); | ||
+ | }); | ||
+ | <br/> | ||
+ | または下記のように設定してください | ||
+ | lwf.rootMovie.GotoAndStop("attack"); | ||
+ | var eventId = lwf.AddMovieEventHandler("_root.char.sword", postLoad: (movie) => { | ||
+ | lwf.RemoveMovieEventHandler("_root.sword", eventId); | ||
+ | Debug.Log (movie); | ||
+ | }); |
2014年10月2日 (木) 17:04時点における最新版
ムービークリップを取得する
ムービークリップを取得するには
<LWF.Movieインスタンス>.SearchMovieInstance(arg1,arg2);
- arg1 : string "インスタンス名"
- arg2 : bool "自身の子以外のインスタンスを検索対象にするか"
または
<LWF.Movieインスタンス>["インスタンス名"];
※<LWF.Movieインスタンス>.SearchMovieInstance("インスタンス名", false); と同義
を使用します。
しかし、Load()を行った直後はまだLWFの構築が終わっていないため、rootに置かれているインスタンスを取得をすることができません。
なので、構築完了を待ってから取得する必要があります。
※rootの参照は構築前でも可能です。
【サンプル】
rootにcharaというインスタンス名のムービークリップが置いてあると仮定します。
下記の例だと構築が完了していないためLogにはNullが返ってきます。
//ダメな例 (Load処理) Debug.Log(lwf.rootMovie["chara"]);
なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。
//良い例 (Load処理) lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) { Debug.Log (lwf.rootMovie["chara"]); });
こうすることでcharaインスタンスを参照して制御することができるようになります。
ボタンを取得する
ボタンを取得するには
<LWF.Movieインスタンス>.SearchButtonInstance(arg1,arg2);
- arg1 : string "インスタンス名"
- arg2 : bool "自身の子以外のインスタンスを検索対象にするか"
を使用します。
【サンプル】
rootにbuttonというインスタンス名のボタンが置いてあると仮定します。
ムービークリップ同様、構築が完了していないとLogにはNullが返ってきます。
(Load処理) Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false));
なので、構築完了時に発行されるpostLoadイベントを受け取ってから参照するようにします。
(Load処理) lwf.rootMovie.AddEventHandler("postLoad", delegate(LWF.Movie movie) { Debug.Log(lwf.rootMovie.SearchButtonInstance("button", false)); });
gotoAndPlayでジャンプするフレームに置いてあるインスタンスを取得する
GotoAndPlay()などでジャンプした先にいかないと存在しないインスタンスはGotoAndPlay()の直後に
取得しようとしてもNullが返ってきてしまいます。
rootの"attack"というラベルに存在する"sword"というインスタンス名のムービークリップをすると仮定します。
下記のコードだとインスタンスを取得することはできません。
lwf.rootMovie.GotoAndStop("attack"); Debug.Log(lwf.rootMovie["sword"]);
この場合、ジャンプしてその先の構築が行われるまで待つ必要があります。
下記がサンプルになります。
lwf.rootMovie.GotoAndStop ("attack"); lwf.rootMovie.AddEventHandler("render", delegate(LWF.Movie movie) { lwf.rootMovie.ClearEventHandler("render"); Debug.Log (lwf.rootMovie["sword"]); });
または下記のように設定してください
lwf.rootMovie.GotoAndStop("attack"); var eventId = lwf.AddMovieEventHandler("_root.char.sword", postLoad: (movie) => { lwf.RemoveMovieEventHandler("_root.sword", eventId); Debug.Log (movie); });