2009-05-08 8 views
0

私はスクリプトタグ内の関数の束、および各リスト項目に画像を追加するには、カスタムitemRenderを使用してListコンポーネントでMXMLファイルを持っています。しかし、画像をクリックして関数に呼び出しを追加すると、「定義されていないメソッドへの呼び出し」エラーが発生します。私の関数が同じページにすぐそこですが...ここでは次のようになります。)するitemRenderer結果

<mx:List x="10" y="38" width="358" height="231" id="audioPlaylist" change="playSong(event)" alternatingItemColors="[#7DC1F0, #4DAEF1]" color="#000000" labelField="title" fontSize="10" themeColor="#FFFFFF"> 
    <mx:itemRenderer> 
     <mx:Component> 
      <mx:HBox width="100%" height="20" horizontalAlign="left"> 
       <mx:HBox width="100%" height="100%" horizontalAlign="left"> 
        <mx:Text text="{data.title}"/> 
       </mx:HBox> 
       <mx:HBox width="100%" height="100%" horizontalAlign="right"> 
        <mx:Image id="iTunesButton" source="@Embed(source='assets/iTunes.png')" toolTip="Click to buy this song on iTunes" click="iTunesLink(data.buyLink)"/> 
       </mx:HBox>       
      </mx:HBox> 
     </mx:Component> 
    </mx:itemRenderer>            
    </mx:List> 

機能iTunesLink(呼び出される他の機能の束と一緒に、ページ上の権利があります問題はないが、なぜそれは未定義に戻るのだろうか?

答えて

0

はouterDocument.iTunesLink(data.buyLink)を試し

+0

感謝。それはうまくいった! – Martholomew

0

アイテムレンダラーは、実際には別々のクラスに変換されるので、「この」演算子は、コンポーネントではなく含むファイルをいいます。

これを処理するための最良の方法は、イベントをバブリングです。カスタムイベントを作成し、バブリングをtrueに設定し、コンポーネントからディスパッチします。次に、リストを含むファイルには、そのイベントをリッスン(含むクラスに!) - (あなたがリストを拡張し、[イベント(名前=「myCustomEvent」を追加する場合を除き、あなたはActionScriptでそれを行う必要があります、タイプ= "me.MyEvent")]を入力します)。次に、あなたの関数を呼び出すことができます。

私は通常、別のファイルにアイテムレンダラーを定義する...それは何が起こっているか理解することは簡単です。

関連する問題