LWFのSetEventHandler,SetMovieEventHandler
http://muzigram.muzigen.net/2012/11/hello-lwf.html?q=lwfの続きです。 LWFが動いたら次に試したくなったのが
- 動き終わったらコールバック
- enterFrameをUnityで(使うかな?)
みたいな挙動。
とりあえずこちらもHello World的に「とりあえず動いた!」ところまでやってみました。
■ やってみた
using UnityEngine;
[ExecuteInEditMode] public class LWFSampleObject : LWFObject { public int count=0; void Start() { string dir = System.IO.Path.GetDirectoryName(lwfName); if (dir.Length > 0) dir += ”/”;
if (Application.isEditor)
UseDrawMeshRenderer();
//sample swf
SetEventHandler("NoticePressEvent",(movie,button)=>{print("test");});
//get fscommand("event",done);
SetEventHandler("done",(movie,button)=>{print("test");});
//add eny event handler
SetMovieEventHandler("\_root",
(movie)=>{print("load");},
(movie)=>{print("postload");},
(movie)=>{print("unload");},
(movie)=>{count++;print("onEnterFrame"+count);},
(movie)=>{print("update");},
(movie)=>{print("render");});
Load(lwfName, dir);
}
}
■ 方法1:fscommandを仕込む
19行目でやってる方法です。
こちらは前の記事でも紹介した方法ですが、
特定フレームでfscommandを仕込んでおけばそのイベントが取得できるってやつです。
■ 方法2:MovieEventHandlerを登録する。
22行目の方法です。
LWFObject.SetMovieEventHandlerの第一引数で要求される「instanceName」
がわからずちょっと難儀したのですが、調べてみると
lwf_core.csの辺りでswfのmovieClip等のID
をひとまとめにして(以下略)的な感じのようでとりあえず。
こまけぇこたあいいんだよ(AA略
と”_root”を指定。
とりあえずこれで各種イベントが取得できる体です。
発展すると、中のムービークリップのOnEnterFrame取る。とかできるんかな。
■ 方法3:SetButtonEventHandlerを登録する。
あとでやる。(swf吐き出してもらわな…)
■ 補足
LWFObject.SetMovieEventHandler
の引数がズレているような感じがしたので人生初のPull Request
してみました(`・ω・´)
https://github.com/gree/lwf/pull/8/files
◯◯◯ーの◯◯が入ってる会社の社員だけど、◯◯ーのプロジェクトにプルリク出してやったぜ~。ワイルドだろー。
ってやりたかっただけです。ごめんなさい!