2016-10-07 12 views
0

열려있는 드롭 다운 아이콘의 특정 영역을 클릭 할 때 팝업 영역을 자동으로 닫는 Spark ComboBox가 있습니다. ComboBox가 완벽하게 작동하는이 팝업 옆에 앉아 있습니다.드롭 다운 버튼의 특정 영역을 클릭하면 콤보 박스가 바로 닫힙니다.

첫 번째 팝업은 글꼴 목록입니다. 두 번째는 글꼴 크기 목록입니다.

시스템 글꼴 목록을 채울 때 문제가 발생하기 시작한 글꼴 콤보 상자가 나타났습니다. 배열에는 900 개의 글꼴이 있습니다. 이 전에는 글꼴 목록이 10 개의 글꼴로 채워졌습니다. 그것은 10 글꼴로 잘 작동합니다.

글꼴 콤보는 설명 선에 있지만 두 번째 콤보 상자가 제대로 작동해도 문제가되지 않습니다.

열려있는 드롭 다운 버튼의 가운데에서 오른쪽을 클릭하여 매번 닫는 팝업 영역을 재현 할 수 있습니다. 버튼 중앙 위나 아래를 클릭하면 잘 작동합니다.

내가 무슨 일이 일어 났는지 추측해야한다면 항목의 양이 팝업 위치를 평소보다 오래 걸리게하고 일시적으로 마우스 아래의 영역을 가리고 마우스 이벤트가 아니라는 것입니다. 팝업 영역이 즉시 닫힙니다. 나는 모르지만 나는 다른 것을 생각할 수도없고 고칠 수도 없다.

예 응용 프로그램 :

<?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의 버그로 인한 것 같습니다. useMinimumHitArea라는 MobileSkin 클래스의 속성이 있습니다. MinimalScrollerSkin과 관련 클래스는 MobileSkin을 확장합니다. 이 속성은 기본적으로 true로 설정됩니다. 이 속성 상태에 대한

문서 : 스케일 없음의 크기가 1/4 인치 정사각형에 비해 작은 경우 투명

전환은 히트 영역을 중심으로. 실제 크기는 applicationDPI를 기준으로합니다.

스킨에서이 속성을 false로 설정하면 문제가 해결됩니다. 또한 트랙 히트 영역이 컨테이너 내용으로 넘쳐 흐르는 문제를 수정했습니다. useMinimumHitArea를 설정하는 것이 트랙을 그리는 유일한 방법 이었기 때문에이를 수정하기 위해 VScrollBarTrackSkin을 만들어야했습니다.