目次

右クリックメニュー

基礎知識

右クリックメニューはOpenLaszloではコンテキストメニューと呼ばれます。

LzContextMenuコンテキストメニュー本体。メニューアイテムの入れ物。メニューオープン時にonmemuopenイベントを送信する。
LzContextMenuItemコンテキストメニュー内のメニューアイテム。
メソッドオブジェクト内容
setDefaultContextMenu()<canvas>canvas上に設定される右クリックメニュー。すべてのビューに対するデフォルトメニューになる。
addItem()LzContextMenuメニューアイテムをメニューに追加。
clearItems()LzContextMenuすべてのカスタムアイテムをメニューから削除。
getItems()LzContextMenuカスタムアイテムの一覧リストを取得。
hideBuiltInItems()LzContextMenuFlashのデフォルトメニューアイテムを削除する。
makeMenuItem()LzContextMenuメニューアイテムを新規作成する。
setDelegate()LzContextMenuメニューオープン時にコールされるデリゲートを指定。
showBuiltInItems()LzContextMenuFlashのデフォルトメニューアイテムを表示する。
getCaption()LzContextMenuItem表示されているメニューアイテム名を取得。
setCaption()LzContextMenuItem表示するメニューアイテム名を設定。
setDelegate()LzContextMenuItemメニューアイテム選択時にコールされるデリゲートを指定。
setEnabled()LzContextMenuItemメニューアイテムの有効・無効。無効時はグレーアウトになってクリックに反応しない。
setSeparatorBefore()LzContextMenuItem 区切り線を表示。
setVisible()LzContextMenuItemメニューアイテムの可視・不可視を設定。
setContextMenu()<view>メニューアイテムをビューに実装(ひもづけ)する。

基本形その1

下記の四角の上で右クリックしてください。「右クリックテスト」というメニューが出ます。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    // メニュー生成
    var cm = new LzContextMenu(); 
 
    // メニューアイテム生成
    var item = cm.makeMenuItem("右クリックテスト",new LzDelegate(this,"dispText")); 
    cm.addItem(item); 
 
    // 生成内容をビューに反映
    this.setContextMenu(cm);
  </handler>
  <method name="dispText">
    txt.addText("右クリックテスト実行" + "\n");
  </method>
  <text id="txt" multiline="true"/>
</canvas>

基本形その2

メニューを選択したときに、それぞれの引数データをメソッドに渡します。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
      var cm = new LzContextMenu();
      var del = new LzDelegate(this, "dispText");
 
      var item1 = cm.makeMenuItem("メニュー:1", del);
      item1.value = "1";
      cm.addItem(item1);
 
      var item2 = cm.makeMenuItem("メニュー:2", del);
      item2.value = "2";
      cm.addItem(item2);
 
      var item3 = cm.makeMenuItem("メニュー:3", del);
      item3.value = "3";
      cm.addItem(item3);
 
      this.setContextMenu(cm);
  </handler>
  <method name="dispText" args="d">
    txt.addText(d.value + "が選択されました" + "\n");
  </method>
  <text id="txt" multiline="true"/>
</canvas>

右クリックメニューを隠す

デフォルトだと、Flashの画面上で右クリックしたときにOpenLaszloのメニューが表示されます。

赤で囲ったOpenLaszlo固有のメニューを表示しないようにするには、下記のコードを<canvas>直下に記述すればOKです。

<script>
  canvas.setDefaultContextMenu(new LzContextMenu()); 
</script>