2011-03-03 1 views
0

검색 응용 프로그램에서 자동 압축 해제 기능을 수행하는 콤보 상자가 있습니다. 검색 기능이 검색 버튼에 의해 트리거됩니다. 또한 콤보 상자의 항목이 두 번 또는 한 번 클릭되었을 때 검색 기능을 트리거하려고합니다. 코드 :AS3, 콤보 상자에서 항목을 선택할 때 검색 기능을 트리거하는 방법은 무엇입니까?

//for triggering search function from combobox(search_complex) it will be 
    something like that but i am not sure 
    search_complex.addEventListener(Event.CHANGE, search); 
    search(event:Event):void{//something will come hereto use "selctedItem" to 
    trigger search function} 


//search function which is working fine by pressing search button 
bt_search.addEventListener(MouseEvent.CLICK, search); 
function search(MouseEvent):void{ 
currentUserbase = []; 
for (var n:int = 0; n<allUserbase.length; n++) 
{ 
for (var k:int = 0; k<allUserbase[n].complex.length; k++) 
{ 
if ((allUserbase[n].complex[k].value.toLowerCase() == 
search_complex.text.toLowerCase() || search_complex.text=="")) 
{ 
currentUserbase.push(allUserbase[n]); 
} 
} 
} 
updateList(); 
}//end search 

답변

0

나는 올바른 길을 가고 있다고 생각합니다. 시도 :

search_complex.addEventListener(Event.CHANGE, search); 
bt_search.addEventListener(MouseEvent.CLICK, search); 

function search(event:Event):void 
{ 
    currentUserbase = []; 
    for (var n:int = 0; n<allUserbase.length; n++) 
    { 
    for (var k:int = 0; k<allUserbase[n].complex.length; k++) 
    { 
     if ((allUserbase[n].complex[k].value.toLowerCase() == search_complex.text.toLowerCase() || search_complex.text=="")) 
     { 
     currentUserbase.push(allUserbase[n]); 
     } 
    } 
    } 

    updateList(); 

}//end search 

당신은 당신이 사용해야하는 특성에 따라 search_complex.selectedItem.label 또는 search_complex.selectedItem.label를 사용하여 콤보 상자의 선택 항목을 얻을 수 있어야합니다.

+0

@ 제이슨를 작성,하지만 난 search_complex.selectedItem.label 어떻게 그래서 난 콤보 상자에서 항목을 선택할 때 트리거 "검색"것이라고 기능 – hanna

+0

를 사용하는 곳과 방법있다 @hanna,'search'가 실제로 검색을 수행하는 함수라고 가정하면'bt_search' 버튼이 클릭되거나'search_complex combobox'에서 항목이 선택 될 때마다 자동으로 호출됩니다. 이것이 eventListeners가 내 예제의 맨 위에있는 것입니다. 'search_complex.selectedItem.label'을 언제 사용해야하는지에 관해서는, 당신이 당신의 검색 기준을 설정해야 할 필요가있을 때마다 그것을 사용할 것이라고 가정하고 있습니다. 'updateList()'가'currentUserbase' 배열의 내용을 사용하여 검색을 수행한다면'search_complex.selectedItem.label'을'search()'배열에 추가하십시오. –

+0

@jason, 여기에 나를 도와 주셔서 고마워,하지만 난 여전히 일들에 대해 혼란스러워, 나는 실제로 자동 완성 고급 예제에서 다음 링크에서 자동 완성 상자를 사용하고 있습니다 : http://developer.yahoo.com/flash/astra-flash/ autocomplete/examples.html 이제 search_complex.addEventListener (Event.CHANGE, search)를 사용할 때; 드롭 다운 목록의 첫 번째 항목에 대한 검색 만 자동으로 수행하고 항목 사용자 선택에 대한 검색은 수행하지 않습니다. updateList는 검색 기능이 완료되면 다른 목록을 결과로 업데이트하는 것입니다. – hanna

1

정확히 원하는 것을 이해하지 못합니다.

검색 기능이있어 제대로 작동합니까? 이제 각 이벤트 별 처리기가 필요하지 않습니다. 모든 이벤트에 대해 하나를 사용하면 충분합니다. 다른 모든 이벤트가이 기본 클래스에서 상속하기 때문에 function 매개 변수는 "이벤트"유형을 사용합니다.

내 코드를 확인하십시오. cd는 내 콤보입니다. 이 예는 회신을 위해, flex3에 감사를

<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     [Bindable] private var arr:ArrayCollection = new ArrayCollection([ 
      {name:"Alexander"}, 
      {name:"Bernd"}, 
      {name:"Carl"} 
     ]); 

     private function init():void 
     { 
      cb.addEventListener(MouseEvent.CLICK,search); 
      cb.addEventListener(MouseEvent.DOUBLE_CLICK,search); 
      cb.addEventListener(Event.CHANGE,search); 
     } 

     private function search (event:Event) :void 
     { 
      trace (event.type); 
     } 
    ]]> 
</mx:Script>