- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
タグをスクリプトで動的生成するときにイベントハンドラを定義する方法。
サンプルではonclickイベントハンドラスクリプトを追加しています。赤い四角をクリックすると色が変わります。
(OpenLaszlo4.7.1/swf8)
ソースコード中の★以下のところがポイントです。
<canvas proxied="false" bgcolor="0xeeeeee"> <handler name="oninit"><![CDATA[ for(var i=1;i<5;i++){ // ビューの初期状態を設定 var v = new lz.view(canvas); v.setAttribute('name','m_'+i); v.setAttribute('width',50); v.setAttribute('height',30); v.setAttribute('bgcolor',0xff0000); var t = new lz.text(v); t.setAttribute('text',v.name); // ★ // ビューをクリック可能に v.setAttribute('clickable',true); // ビューにイベントハンドラ用スクリプトを記述 v.script_for_handler = function () { switch(this.name){ case "m_1": // 外部メソッド呼び出しの場合 canvas.mm_1(); break; case "m_2": // 外部メソッド呼び出しの場合 canvas.mm_2(); break; case "m_3": // 内部スクリプト実行の場合 this.setAttribute('bgcolor',0xff00ff); break; case "m_4": // 内部スクリプト実行の場合 this.setAttribute('bgcolor',0xffff00); break; } } // イベントハンドラをビューに登録しonclickを関連付け var del = new LzDelegate(v, 'script_for_handler'); del.register( v ,"onclick" ); } ]]></handler> <simplelayout axis="x" spacing="5"/> <method name="mm_1"> m_1.setAttribute( "bgcolor", 0x00ff00); </method> <method name="mm_2"> m_2.setAttribute( "bgcolor", 0x0000ff); </method> </canvas>
ただし、この記述の仕方はかなりOpenLaszloぽくないですねー。。