我有一个mxml文件,脚本标签中包含许多函数,还有一个List组件,它使用自定义itemRender将图像添加到每个列表条目。但是当我在点击图像时添加对函数的调用时,我得到“调用未定义的方法”错误。即使我的功能就在同一页面上......这就是它的样子:
<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()函数就在页面上,还有一堆其他函数被调用没问题,但为什么它返回undefined?
答案 0 :(得分:0)
尝试outerDocument.iTunesLink(data.buyLink)
答案 1 :(得分:0)
项呈示器实际上被转换为单独的类,因此“this”操作符引用组件,而不是包含文件。
处理此问题的最佳方法是使用冒泡活动。创建自定义事件,将bubbling设置为true,然后从组件中调度它。然后,在包含列表的文件中,监听该事件(在包含类上!) - (除非你想扩展列表并添加[Event(name =“myCustomEvent”,type),否则你需要在actionscript中执行它) =“me.MyEvent”)]到扩展名)。然后你可以调用你的功能。
我通常在单独的文件中定义项目渲染器...更容易理解正在发生的事情。