LWFのSetEventHandler,SetMovieEventHandler

LWFのSetEventHandler,SetMovieEventHandler

更新: 2013年3月29日

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

◯◯◯ーの◯◯が入ってる会社の社員だけど、◯◯ーのプロジェクトにプルリク出してやったぜ~。ワイルドだろー。
ってやりたかっただけです。ごめんなさい!

最新記事をフォロー

RSS Feed