我的ItemRenderer存在问题,我将其用于Spark列表。我的代码如下:
我有这个清单:
<s:List
id="productSetList"
dataProvider="{ model.productSets }"
change="model.selectSet( productSetList )"
height="100%" width="100%"
borderVisible="false"
itemRenderer="SideBarItemRenderer" top="20" left="15">
</s:List>
我的itemRenderer是:
<s:ItemRenderer
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
width="160" height="175" autoDrawBackground="false" buttonMode="true" useHandCursor="true"
click="click(event)" cacheAsBitmap="true"
>
<fx:Script>
<![CDATA[
import com.png.vm.model.vos.ProductSet;
protected function click(event:MouseEvent):void
{
trace('arthur');
}
]]>
</fx:Script>
<s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>
</s:ItemRenderer>
问题是,如果我滚动列表,然后点击一个项目,它就不会追踪'亚瑟'!为什么会这样?我必须追踪有人在列表中点击的所有时间!
修改
如果我删除列表中的change="model.selectSet( productSetList )"
,它就可以了!但我不能删除,一些建议?如何将其切换到另一个功能?
答案 0 :(得分:1)
跟踪仅在您调试/使用Flash Player的调试版本时有效。确保你使用它。如果您想要弹出消息,请使用Alert.show("message")
有关trace()的更多信息,请查看: http://livedocs.adobe.com/flex/3/html/help.html?content=logging_08.html
和Alert.show():http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001965.html
如果您正在运行调试播放器。尝试以这种方式从嵌入式<s:Group>
发起click事件,无论您在位图之外添加什么,都会触发点击事件。
类似的东西:
<s:Group width="100%" height="100%" click="click(event)" >
<s:BitmapImage source="{ProductSet(data).image}" width="160" height="175"/>
</s:Group>
我确实在
之前在ItemRenderers中为我提供了点击事件答案 1 :(得分:0)
道歉,我终于解决了。问题是函数内部model.selectSet
,我正在调用List.change;我搞砸了这个名单!我的功能如下:
public function selectSet(list:List):void {
list.layout.verticalScrollPosition=100;
// another stuffs
}
所以,我刚删除了这一行:list.layout.verticalScrollPosition=100;
现在它正常工作。
感谢您的帮助!