2012-03-16 2 views
1

내 Flex 4.6 웹 응용 프로그램에서 주로 불꽃 구성 요소를 사용하지만 mx 구성 요소도 있습니다 (PopUpButton 소스 코드가 아래에 있습니다).PopUpButton 확장 및 Flex 4 웹 응용 프로그램에서 사용

사용자가 해당 버튼에 문제가 있음을 알리지 만 몇 주 후에는 재생산 할 수 없습니다. 들에 의해에 연결된 메뉴을 : 목록을하지만 아무것도 변경되지 않았습니다

나는 MX를 교체 시도했습니다. "null 포인터 예외"또는 다른 오류가 발생하여 자신을 테스트 할 때 적중을하지 않을 것으로 의심됩니다 ...

내 질문 : 내 맞춤 검색 버튼에 대한 경고가 방법은 사적이거나 존재하지 않을 것인가?

enter image description here

은 아무도 이유를 발견시겠습니까?

내 주요 App.mxml :

<?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" 
    xmlns:comps="*"> 

    <fx:Script> 
     <![CDATA[ 
        _auxBtn.update(obj.aux); 
        ...... 
        _auxBtn.disable(); 
     ]]> 
    </fx:Script> 

    <comps:AuxButton id="_auxBtn" enabled.normal="false" enabled.ingame="false" aux="handleAux(event)" /> 

내 사용자 정의 버튼 AuxButton.mxml :

<?xml version="1.0" encoding="utf-8"?> 
<mx:PopUpButton 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    popUp="{_list}" 
    initialize="init(event)"> 

    <fx:Metadata> 
     [Event(name="aux", type="PrefEvent")] 
    </fx:Metadata> 

    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 
      import mx.utils.ObjectUtil; 
      import spark.components.List; 

      private const EXACT:String = 'Своя игра'; 
      private const REVEAL:String = 'Показать'; 

      private var _str:String; 

      [Bindable] 
      private var _data:ArrayCollection = new ArrayCollection(); 

      [Bindable] 
      private var _list:List = new List(); 

      private function init(event:FlexEvent):void { 
       _list.dataProvider = _data; 
       _list.addEventListener('click', handleList); 
       addEventListener('click', handleClick); 
      } 

      public function update(aux:Array):void { 
       var found:Boolean; 

       // nothing has changed 
       if (ObjectUtil.compare(_data.source, aux, 0) == 0) 
        return; 

       if (aux == null || aux.length == 0) { 
        disable(); 
        return; 
       } 

       _data.removeAll(); 
       for each (var obj:Object in aux) { 
        _data.addItem(obj); 

        if (!_str) { 
         if (EXACT == obj['label']) { 
          _str = obj['event']; 
          label = obj['label']; 
          found = true; 
         } else if (REVEAL == obj['label']) { 
          _str = obj['event']; 
          label = obj['label']; 
          found = true; 
         } 
        } else if (_str == obj['event']) { 
          found = true; 
        } 
       } 

       if (!found) { 
        _str = _data[0].event; 
        label = _data[0].label; 
       } 

       enabled = true; 
      } 

      private function handleList(event:MouseEvent):void { 
       var index:int = _list.selectedIndex; 
       if (index >= 0 && index < _data.length) { 
        _str = _data[index].event; 
        label = _data[index].label; 
       } 
       close(); 
      }   

      private function handleClick(event:MouseEvent):void { 
       dispatchEvent(new PrefEvent(PrefEvent.AUX, _str)); 
       disable(); 
      } 

      public function disable():void { 
       _data.removeAll(); 
       enabled = false; 
       _str = null; 
       label = ''; 
      } 
     ]]> 
    </fx:Script> 
</mx:PopUpButton> 
+0

코드를 새 프로젝트에 복사했지만 경고 메시지가 표시되지 않았습니다. 내가 게시 한 코드에 문제가 있다고 생각하지 않습니다. 경고가 사라질 때까지 앱의 덩어리를 제거하려고 했습니까? 문제가 실제로 어디에서 발생했는지 추적하는 데 도움이 될 수 있습니다. –

+1

경고 메시지가 가짜 일 수도 있습니다. 프로젝트에서 "깨끗한"작업을 수행 한 후에 많은 이상한 일들이 사라졌습니다. –

답변

1

은 때때로 정의를 분석하는 어려움을 가지고, 플래시 빌더 경고에 대해 걱정하지 마십시오 mx 확장 코드 (때로는 불꽃도!). 실행해도 문제가 없으면 FB가 다시 시작된 후 경고가 사라집니다.

기능에 따라 스파크 성분의 혼합을 사용하여 동일한 기능을 재현 할 수도 있습니다. 아마도 가장 좋은 방법 일 수 있습니다.

체류가 보장, 내 모든 컴퓨터 : 당신 사용자가보고하는 오류에 대한

상에 아무런 경고도 없다, 내 플래시 빌더에서 코드를 붙여 (그리고 PrefEvent을 제거), 당신은 더 많은 우리를 제공해야합니다 우리가 도울 수있는 세부 사항.

건배

+0

감사합니다. 다른 Flash Builder 사용자의 통찰력을 얻는 것이 좋습니다. –