LzDelegateって
なにもの?よく見かけるし、ようわからんし・・・、でいろいろ試してみた。
<?xml version="1.0" encoding="UTF-8"?> <canvas debug="true"> <button name="button1">ボタン <attribute name="listenValue" type="number" value="0"/> <method event="onclick"> Debug.write(this.name + ":ボタンが押された" ); </method> <method event="onmouseover"> this.setAttribute("listenValue", this.listenValue + 1 ); </method> </button> <!-- 使い方:1 イベントとの連動 --> <view name="view1"> <method event="oninit"> // 時クラス内のメソッドをbutton1のonclickイベントに連動させる var delegate = new LzDelegate(this, "listenOnclick"); delegate.register(parent.button1, "onclick"); </method> <method name="listenOnclick"> Debug.write(this.name + ":buton1のonclickと連動中"); </method> </view> <!-- 使い方:2 attributeとの連動 --> <view name="view2"> <method event="oninit"> // 時クラス内のメソッドをbutton1のonclickイベントに連動させる var delegate = new LzDelegate(this, "listenAttribute"); // "on" + attribute名 delegate.register(parent.button1, "onlistenValue"); </method> <method name="listenAttribute" args="v"> Debug.write(this.name + ":buton1のlistenValueの値変更に反応:" + v ); </method> </view> <!-- 使い方:3 そのまま実行:リフレクションっぽい? --> <view name="view3"> <method event="oninit"> // 時クラス内のメソッドをbutton1のonclickイベントに連動させる var delegate = new LzDelegate(this, "eventExec"); delegate.execute(); </method> <method name="eventExec"> Debug.write(this.name + ":executeでも実行できる"); </method> </view> </canvas>
要するに
- イベントを拾って、実行
- 値の変更も拾える
- そのまま実行も出来る、リフレクションっぽく
非同期でいろいろ動くLaszloでは、必須の項目なんでしょうね。これ学んだら、少しだけ開眼しました。
あ、それとJavaRPC関連が何とか分かってきたので近々S2とつなげてみよう!