我认为这会很容易,但我遇到了各种各样的问题。我有一个带有一个图像和两个标签的ItemRenderer。我想将单独的鼠标事件分配给图像和两个标签。似乎项目渲染器被当作一个单独的交互式部分,而我还没有找到一种方法来覆盖它。我甚至不能禁用默认的翻转效果,所以我不得不设置rollOverColor的样式来匹配我的背景。
有人能提供解决方案吗?
<s:DataGroup id="browserDataGroup" dataProvider="{model.userBoardList}"
verticalCenter="0" left="10" rollOverColor="0x424242"
itemRenderer="edu.xxxxx.components.board.BrowserItemRenderer">
<!--itemrenderer code below -->
<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"
xmlns:ns="library://ns.adobe.com/flex/mx"
buttonMode="true" useHandCursor="true"
mouseChildren="true">
<s:states>
<s:State name="up"/>
<s:State name="over"/>
</s:states>
<s:layout>
<s:VerticalLayout gap="2"/>
</s:layout>
<s:Group>
<ns:Image id="image" source="{data.thumbnail}"
addedEffect="Fade" completeEffect="Fade" removedEffect="Fade"
width="130" height="89"
horizontalCenter="0" verticalCenter="0"/>
<s:Rect id="imageRect" width="130" height="89">
<s:stroke>
<s:SolidColorStroke color="0xFFFFFF" joints="miter" pixelHinting="true"/>
</s:stroke>
</s:Rect>
</s:Group>
<s:Label text="{data.title}" color="0xFFFFFF" fontWeight="bold"/>
<s:Group>
<s:layout>
<s:HorizontalLayout gap="3"/>
</s:layout>
<s:Label text="Edit" color="0xFFFFFF" click="trace('edit');"
textDecoration.up="underline" textDecoration.over="none"/>
<s:Label text="|" color="0xFFFFFF"/>
<s:Label text="Delete" color="0xFFFFFF" click="trace('delete');"
textDecoration.up="underline" textDecoration.over="none"/>
</s:Group>
</s:ItemRenderer>发布于 2010-03-24 22:45:20
如果这对其他人有帮助,那么解决方案是对itemRenderer实例使用set autoDrawBackground="false"。这将禁用覆盖图的绘制。然后,我应该对我想要与之交互的各个孩子使用rollOver和rollOut。新秀犯错…你不喜欢看到他们。
https://stackoverflow.com/questions/2484107
复制相似问题