訪問List的itemRenderer的組件中定義的方法?

如何引用一個List的itemRenderer裏的自定義方法,翻了翻手冊也沒大看見有現成的函數,終於琢磨出了一個,不知道好很差,發上來再說:
主程序文件List1.mxml:
<? xml version ="1.0" encoding ="utf-8" ?>
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" >
   < mx:Style >
    Application
    {
    font-size:12px;
    }
   </ mx:Style >
   < mx:Script >
    import mx.controls.Alert;
    import mx.controls.listClasses.ListBaseContentHolder;
    

    private function handleClick():void
    {
      if(txt.text=="")
      Alert.show("請輸入數字1-7(注意:未驗證合法性)");
      else
      {
        var n:int=parseInt(txt.text);
        //這句是關鍵代碼
        (mylist.getChildAt(2) as ListBaseContentHolder).listItems[n-1][0].alertBtn();
      }
    }
   </ mx:Script >
   < mx:Model id ="arr" >
     < root >
       < item label ="按鈕1" />
       < item label ="按鈕2" />
       < item label ="按鈕3" />
       < item label ="按鈕4" />
       < item label ="按鈕5" />
       < item label ="按鈕6" />
       < item label ="按鈕7" />
       < item label ="按鈕8" />
       < item label ="按鈕9" />
     </ root >
   </ mx:Model >
   < mx:List id ="mylist" dataProvider ="{arr.item}" width ="100"     rowCount ="9" leading ="0" itemRenderer ="MyRenderer" />
   < mx:TextInput id ="txt" />
   < mx:Button label ="觸發" click ="handleClick();" />
</ mx:Application >
 
itemRenderer的組件文件MyRenderer.mxml:
<? xml version ="1.0" encoding ="utf-8" ?>
< mx:Box xmlns:mx ="http://www.adobe.com/2006/mxml" width ="100%" height ="100%" horizontalGap ="0"    
   verticalGap ="0" paddingLeft ="0" paddingRight ="0"     paddingTop ="0" paddingBottom ="0" >
   < mx:Script >
    import mx.controls.Alert;
    
    public function alertBtn():void
    {
    Alert.show("觸發了alertBtn(),我是:"+btn.label);
    }
   </ mx:Script >
   < mx:Button id ="btn" label ="{data.label}" width ="100%" cornerRadius ="0" />
</ mx:Box >
 
運行演示,輸入呼叫的實例位置1-9:我輸入3,而後單擊按鈕:
可見調用了實例方法。
 
注:走了很多彎路,起初我覺得經過List的getChildAt()能夠獲得renderer的引用,後來發覺不是,經過Alert它發現其實getChildAt(3)獲得的是ListBaseContentHolder的實例,後查了查ListBaseContentHolder得方法裏面有個listItems數組放着每一項的引用,因而有了引用什麼都好說了。
相關文章
相關標籤/搜索