0

レイアウトは次のとおりです。

<s:Scroller>
    <s:VGroup>
        <s:List id="list1"/>
        <s:List id="list2"/>
        <component:ThirdPartyComponent/>
    </s:VGroup>
</s:Scroller>

したがって、私のアプリケーションは、右に1つのスクロールのみを表示する必要があります。これは、scoller、list1、list2などはスクロールを表示しないはずです。

マウスホイールのスクロールが機能しないことがわかるまで、しばらくは正常に機能していました。mouseWheel子コンポーネント(リストおよびサードパーティ)によってキャプチャされたイベントのようです。

ネットで解決策を探したところstopImmediatePropagation()、子mouseWheelイベントの解決策はありますが、良い解決策ではないようです。スクロールを行うことはプライベートメンバーであるThirdPartyCompoentの一部のほかに、ThirdPartyCompoentから聞く方法はありませmouseWheel

何か案が?

名探偵コナン

mouseWheelこれまでのところ、イベントをリッスンしてVGroup mouseChildrenそこでルートを無効にしてから、ルートVGroupクリックハンドラーでを有効にすることで解決されたケースmouseChildrenです。しかし、もっとエレガンの解決策がある場合はコメントしてください。

4

2 に答える 2

1

たぶん、これらのオプションはあなたを助けることができます

オプション1

<component:ThirdPartyComponent 
           creationComplete = "afterCreation()" 
           id               = "TPComponent">
  <fx:Script>

     // You could use initialize or creationComplete to handle MouseWheel Listener
     private function afterCreation():void{
       this.addEventListener(MouseEvent.MOUSE_WHEEL, hoverHandler);
     }
     private function hoverHandler(e:MouseEvent):void{
       if(!e.isDefaultPrevented()){
         e.preventDefault();
         e.cancelBubble = true;
         e.cancel = true;
         e.returnValue = false;
       }
       return false;
     }
  </fx:Script>
</component:ThirdPartyComponent>

ただし、MouseEvent.ROLL_OVERを使用して、子コンポーネントでMouseWheelを無効にすることをお勧めします。これは、表示オブジェクトコンテナの子オブジェクトのすべての領域をカバーするためです。子がMOUSE_WHEELを含むマウスイベントをディスパッチする機会がないように、bubleイベントはfalseに戻る必要があります。

オプション番号:2

<component:ThirdPartyComponent 
           creationComplete = "afterCreation()" 
           id               = "TPComponent">
  <fx:Script>

     private function afterCreation():void{
       this.mouseChildren = false;
     }

  </fx:Script>
</component:ThirdPartyComponent>

mouseChildrenをfalseに設定すると、すべてのmouseChildrenのイベントが魔法のように親に与えられます。mouseChildrenはmouseEnabledと等しくないので、それを返すと異なる影響があります:)

オプション#1とオプション#2を組み合わせるか、どちらかを選択することができます。これはあなたに最適です:)

于 2012-06-24T04:55:24.607 に答える
0

再帰を介してサードパーティコンポーネントの子にアクセスできます

子供の子供に再帰的にアクセスする方法は?

必要な子供にマウスホイールブロックハンドラーを追加します

于 2012-06-22T08:48:36.883 に答える