0

PopUpMenuButton コントロールについて質問があります。

このコントロールの既存の動作は次のとおりです。

「PopUpMenuButton コントロールには 2 つのボタン (メイン ボタンとセカンダリ ボタン (「v」の下矢印記号のように見えます)) があります。ユーザーがメイン ボタンをクリックすると、コントロールは、選択されたメニュー項目に関する情報を含む itemClick (MenuEvent.ITEM_CLICK) イベントを送出します。したがって、ユーザーがメイン ボタンをクリックするか、ポップアップ メニューから現在の項目を選択すると、同じ itemClick イベントが送出されます。どちらの場合も同じイベントがディスパッチされるため、メイン ボタンをクリックすると、最後に選択した menuItem をクリックした場合と同じ動作が発生するため、メイン ボタンは頻繁に使用されるメニュー項目の役割を果たします。」</p>

私のアプリケーションでは、メイン ボタンの既存の機能を変更する必要がありました。頻繁に使用されるメニュー項目画面に移動するのではなく、ポップアップを開き、セカンダリ ボタン ( v) とまったく同じように動作する必要があります。

PopUpMenuButton コントロールの openAlways=true プロパティで試してみました。しかし、それは問題を完全には解決しませんでした。どんな助けでも大歓迎です。

編集 -

以下の TRISH で言及されているオプションを既に試しました。しかし、それは私の問題を解決していません。

PopUpMenuButton コントロールのメイン ボタンをクリックするたびに、2 つのイベントが送出されます。最初のクリック イベントが送出され、続いて itemClick イベントが送出されます。Click イベント ハンドラーでは、ポップアップを開くコードを記述しているため、ポップアップが開いています。itemclick イベント ハンドラーには、それぞれのページ ナビゲーション コードがあるため、その特定のページに移動しています。(これら 2 つは 1 つずつ発生しているため、最初のポップアップが開き、itemclick ハンドラー コードのために数秒以内に最近開いたページに移動します。したがって、メイン ボタンをクリックするたびに、これら 2 つのアクションが並行して発生するため、ポップアップが表示されます。点滅しますが、安定したポップアップではありません.itemclickハンドラで何かを変更すると、両方のボタンクリックのハンドラが同じであるため、ポップアップボタンの機能に影響します.

4

1 に答える 1

1

編集: PopUpButton の動作は、PopUpMenuButton よりもうまく機能するように見えます。私は、あなたが望んでいることを理解している動作を示すアプリケーションを書きました:

  • メインボタンをクリックすると、矢印ボタンと同じようにポップアップメニューが開きます
  • メイン ボタンをクリックしても、最後に選択したメニュー アイテムのアイテム クリックがトリガーされないようにする必要があります。

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
           xmlns:s="library://ns.adobe.com/flex/spark"
           xmlns:mx="library://ns.adobe.com/flex/mx">
    
        <fx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import mx.controls.Menu;
                import mx.events.MenuEvent;
    
                [Bindable]
                private var menu:Menu;
    
                private function initMenu():void {
                    menu = new Menu();
                    var dp:Object = [
                            {label: "New Folder"}, 
                            {label: "Sent Items"}, 
                            {label: "Inbox"}
                        ];        
                    menu.dataProvider = dp;
                    menu.addEventListener("itemClick", changeHandler);
                }
    
                private function changeHandler(event:MenuEvent):void {
                    var label:String = event.label;        
                    Alert.show(label);
                    // popUpButton.label = event.label;
                    popUpButton.close();
                }           
            ]]>
        </fx:Script>
    
        <s:VGroup>
            <mx:PopUpButton id="popUpButton" openAlways="true"
                                            label="Select a control..." 
                                            popUp="{menu}"
                                            preinitialize="initMenu()" />   
        </s:VGroup>
    </s:Application>
    
于 2012-09-13T14:59:01.937 に答える