フォーラム一覧   -   トピック一覧
   超ビギナー
     Menuのサブメニューを親メニューの左側に表示したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
krs
投稿日時: 2010-3-4 21:32
やや お馴染みさん
登録日: 2009-12-2
居住地:
投稿: 8
Menuのサブメニューを親メニューの左側に表示したい
こんにちわ。このフォーラムにはいつもお世話になっております。
Menuコントロールについて分からないことがあるので質問させていただきます。

Menuのサブメニューは通常ですと次々と右に開かれるのみですが
常に親メニューの左側に表示させたいと思っていますが、
通常のメソッド、プロパティではそのような効果があるものが見つかりませんでした。

サブメニューついてこのフォーラムの過去のスレッドを検索したところ、
「MenuBarコントロールのサブメニューについて (http://www.fxug.net/modules/xhnewbb/viewtopic.php?viewmode=flat&topic_id=901&forum=2 )」というスレッドがあり、
MenuBarコントロールではgetMenuAtをオーバーライドするという手があるようなのですが、
Menuにはそのようなメソッド自体がなく、どの様にしたら良いのか分からず困っています。

どなたかいい方法をご存知の方、ご教授お願いします。
taiga
投稿日時: 2010-3-16 11:47
常連さん
登録日: 2007-5-28
居住地: 東京
投稿: 38
Re: Menuのサブメニューを親メニューの左側に表示したい
引用:
Menuのサブメニューは通常ですと次々と右に開かれるのみですが
常に親メニューの左側に表示させたいと思っていますが、
通常のメソッド、プロパティではそのような効果があるものが見つかりませんでした。
( 中略 )
どなたかいい方法をご存知の方、ご教授お願いします。

良い方法かどうかは分かりかねますが、
サブメニューの表示は、Menu.as の
mx_internal function openSubMenu(row:IListItemRenderer):void
で行われ、メソッド内部で表示座標を計算して定義しています。

座標変更を実現するとしたら、Menu のサブクラスを作成して、
openSubMenu() をオーバーライドして、サブメニューの x, y を変更する…といったところでしょうか。

ただ、サブメニューのインスタンス取得は少々面倒そうです。
動作確認していないので怪しいですが、引数の row を用いて

mx_internal override function openSubMenu(row:IListItemRenderer):void {
    var dx:int; //サブメニューの任意の X 座標
    var dy:int; //サブメニューの任意の Y 座標
    super.openSubMenu(row);
    IMenuItemRenderer(row).menu.move(dx, dy);
}
という具合で実現できそうですが、いかがでしょう。


----------------
taiga
http://taiga.jp/

krs
投稿日時: 2010-3-18 1:46
やや お馴染みさん
登録日: 2009-12-2
居住地:
投稿: 8
Re: Menuのサブメニューを親メニューの左側に表示したい
taigaさん

ご丁寧な解説、ありがとうございます!
さっそく頂いたアドバイスどおりにmenuのサブクラスを作り、
openSubMenu()メソッドをオーバーライドして試したところ、
希望通りサブメニューを左側に表示することが出来ました!

諦めかけていたので助かりました。
ご親切にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を