2010-03-20 29 views
0

Je pensais que ce serait assez facile, mais je suis confronté à toutes sortes de problèmes avec cela. J'ai un ItemRenderer avec une image et deux étiquettes. Je veux assigner des événements de souris séparés à l'image et deux étiquettes. Il semble que le rendu d'élément soit traité comme une seule pièce interactive et je n'ai pas trouvé le moyen de le contourner. Je ne pouvais même pas désactiver l'effet de survol par défaut, j'ai donc dû styliser rollOverColor pour correspondre à mon arrière-plan.Impossible d'interagir avec les enfants d'un itemRenderer dans Flex 4 Gumbo

Quelqu'un peut-il fournir une solution?

<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> 

Répondre

0

Juste au cas où cela aide quelqu'un d'autre, se révèle la solution était d'utiliser pour mettre autoDrawBackground="false" l'instance itemRenderer. Cela désactive le dessin des superpositions. Ensuite, j'aurais dû utiliser rollOver et rollOut pour les enfants individuels avec lesquels je voulais interagir. Rookie erreurs ... vous détestez les voir.