2016-10-07 11 views
0

開いているドロップダウンアイコンの特定の領域をクリックすると、ポップアップ領域を自動的に閉じるSpark ComboBoxがあります。私は完全に動作するこのポップアップの隣に座っているコンボボックスを持っている。ドロップダウンボタンの特定の領域をクリックするとすぐにコンボボックスが閉じます

最初のポップアップは、フォントのリストです。 2番目はフォントサイズのリストです。

フォントコンボボックスにシステムフォントのリストを入力するときに問題が発生していることに気付きました。配列には900のフォントがあります。この前に、フォントリストは10個のフォントで埋められました。それは10フォントで正常に動作します。

フォントコンボボックスは吹き出しにありますが、2番目のコンボボックスがうまく動作するので問題はないようです。

開いているドロップダウンボタンの中央を右クリックすることで、毎回閉じるポップアップ領域を再現することができます。ボタンの上または下をクリックすると、正常に動作します。

何が起こっているのか推測しなければならないのであれば、アイテムの量によってポップアップの位置が通常よりも長くなり、一時的にマウスの下の領域が不明瞭になり、マウスイベントがキャンセルされ、ポップアップ領域がすぐに閉じられます。私には分かりませんが、私は他の何かやそれをどう修正するかを考えることができません。

アプリケーション例:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         applicationComplete="windowedapplication1_applicationCompleteHandler(event)"> 

    <fx:Style> 
     @namespace s "library://ns.adobe.com/flex/spark"; 
     @namespace mx "library://ns.adobe.com/flex/mx"; 

     s|Scroller { 
      skinClass: ClassReference("com.flexcapacitor.skins.MinimalScrollerSkin"); 
     } 
    </fx:Style> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayList; 
      import mx.events.FlexEvent; 

      protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void 
      { 
       var fontList:Array = Font.enumerateFonts(true); 
       fonts.dataProvider = new ArrayList(fontList); 
       fontSizes.dataProvider = new ArrayList([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); 
       fonts.selectedIndex = fontList.length-1; 
       fontSizes.selectedIndex = fontSizes.dataProvider.length-1; 
      } 

      public function fontLabelFunction(object:Object):String { 
       if (object is Font) { 
        return Font(object).fontName; 
       } 
       return object as String; 
      } 
     ]]> 
    </fx:Script> 

    <s:HGroup verticalCenter="0" horizontalCenter="0"> 
     <s:ComboBox id="fonts" labelFunction="fontLabelFunction"/> 
     <s:ComboBox id="fontSizes"/> 
    </s:HGroup> 

</s:WindowedApplication> 

MinimalScrollerSkinと、大きなデータセットを使用して、矢印のエリアドロップダウンに正確にクリックしたときにそれが起こることが表示されます。

+0

コードサンプルを共有して再現してもらえますか? – gbdcool

+0

コード例 –

+0

が追加されました。これはminimalScrollerSkinのバグに起因するようです。 –

答えて

0

MinimalScrollerSkinのバグが原因だったようです。 MobileSkinクラスにはuseMinimumHitAreaというプロパティがあります。 MinimalScrollerSkinとそれに関連するクラスはMobileSkinを拡張します。このプロパティは、デフォルトではtrueに設定されています。このプロパティの状態の

ドキュメント:スケーリングされていないサイズは四分の一インチ角よりも 小さい場合透明

切り替えは、ヒットエリアを中心に。物理サイズは applicationDPIに基づいています。

スキンでこのプロパティをfalseに設定すると、問題が修正されました。トラックヒット領域がコンテナコンテンツにあふれていた問題も解決しました。私は、useMinimumHitAreaを設定することがトラックを描画する唯一のものだったので、それを修正するためにVScrollBarTrackSkinを作成しなければなりませんでした。

関連する問題