ApolloからAdobe AIRになったB1での新機能のひとつである、NativeMenuを試してみました。
メニューで日本語表示も表示することができました。
このNativeMenuは、(今後)以下のメニューを操作することを考えているようです。
- pop-up menu
- context menu
- window menu on Windows
- application menu on Mac OS
Beta1では、application menu on Mac OS のみサポートされているとのことです。
Windowsで呼び出そうとするとcrashするのでチェックするコードを書く必要があると書かれていました。
Flex Builder 3 M2 beta 1ではNativeMenuが、flash.displayパッケージと、builtinの2つがあるように認識されているようで、import文が補完されないケースがあるようです。
以下のようにフルクラス名を指定する事で、なんとかコンパイルが通るようになりました。
var submenu:flash.display.NativeMenu = new flash.display.NativeMenu();
Flex Builder 2.0.1のExtensionだったapollo Extensionでも違うパッケージが補完されるケースがあったようです。
私はここに達するまで6つのプロジェクトを作成しては消しました..(>.<)
今回メニュー用に書いたのは以下コードです。
var submenu:flash.display.NativeMenu = new flash.display.NativeMenu();
var sumenu1:NativeMenuItem = new NativeMenuItem("前へ戻る",false);
sumenu1.keyEquivalent = "[";
sumenu1.keyEquivalentModifiers = [ Keyboard.COMMAND ];
sumenu1.addEventListener(Event.SELECT,goBack);var sumenu2:NativeMenuItem = new NativeMenuItem("次へ進む",false);
sumenu2.keyEquivalent = "]";
sumenu2.keyEquivalentModifiers = [ Keyboard.COMMAND ];
sumenu2.addEventListener(Event.SELECT,goForward);
var subMenuItem:flash.display.NativeMenuItem = new flash.display.NativeMenuItem("履歴");
submenu.addItem(sumenu1);
submenu.addItem(sumenu2);
subMenuItem.submenu = submenu;
Shell.shell.menu.addItem(subMenuItem);
上記は国際化を考えるとあまりいい例ではないですが、ベータの段階でも日本語をそのまま書いて表示されました。
ショートカットキーを設定したりもできるようです。
次のリリースで右クリックで表示されるContextMenuなどもカスタマイズできるとうれしいと思います.
#このドキュメントにあるサンプルほとんどそのままです。
Native menus
http://livedocs.adobe.com/labs/air/1/devappsflex/Menus_1.html
#NativeMenuのasdoc
NativeMenu - Flex 3 Language Reference
http://livedocs.adobe.com/labs/flex/3/langref/flash/display/NativeMenu.html
#importされるパッケージが異なるケース(Flex Builder 2.0.1 + ApolloExtension)
Kei-z.biz | [Apollo]コンパイルでハマった
http://blog.kei-z.biz/?eid=468358#sequel
この記事に対するコメント