0

xml データを含む mx:MenuBar コンポーネントを使用してメニューを表示します。私が見た基本的な動作は、最初に最上位のメニュー項目 (つまり、水平バー) をクリックすると、ポップアップ サブメニューが開きます。次に、どこかをクリックせずに、水平メニュー バーにマウス オーバー/ロール オーバーすると、他のトップ レベル メニューのポップアップ サブ メニューが開きます。

この動作には一貫性がないようです。ポップアップ サブ メニューは、トップ レベルのメニュー項目 (水平メニュー バー) をクリックしたとき、またはメニュー バー項目にマウス オーバー/ロール オーバーしたときにのみ開く必要があります。

最上位メニュー (水平メニュー バー) をクリックしたときにのみ、ポップアップ サブメニューが開くようにします。そのため、mouseOver イベントと rollOver イベントのイベント ハンドラーを追加しました (水平メニュー バーにカーソルを合わせると実際にどのイベントが生成されるかはわかりません)。イベント ハンドラーで、event.preventDefault() メソッドを呼び出して、デフォルトの動作 (つまり、ポップアップ サブ メニューを開く) を防止しました。しかし、何も機能しません。私はそれをコントロールできないと感じました。

デフォルトの動作を抑制し、メニューバーのクリックイベントでのみポップアップサブメニューを開く方法を誰かが言うことができますか.

4

1 に答える 1

0

「モンキー パッチ」を使用して、MenuBar クラスの動作を再定義できます。メソッドはプライベートであるため、メソッドをオーバーライドすることは容易ではありません。

これは、アクティブな「ソースの表示」プロパティを使用した実際の例です。

書き換える関数は

private function mouseOverHandler(event:MouseEvent):void
{
}

新しいメニューをアクティブにするコード行を削除する必要があります。

于 2013-03-29T10:10:40.670 に答える