Aide - Recherche - Membres - Calendrier
Version complète : LinkButton personalisé dans un repeater
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
im_shinji
j'ai creé un repeater qui lit un flux xml, et qui affiche ces donnée dans un linkbutton, j'arrive a envoyer du text, mais je n'arrive pas a affiche une icone pour chaque linkbutton.

Le code de l'application:
CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
    <mx:XML id="mesicones">
        <icones>
            <icone url="/icon/icon1.gif" title="icon1" />
            <icone url="/icon/icon2.gif" title="icon2" />
            <icone url="/icon/icon3.gif" title="icon3" />
        </icones>
    </mx:XML>
    
    <mx:VBox>
        <mx:Repeater id = "myrepeater1" dataProvider="{mesicones.icone}">
            <local:test_comp
                _Id = "mxHbox{myrepeater1.currentIndex}"
                _Text = "{myrepeater1.currentItem.@title}"
                UrlIcon = "{myrepeater1.currentItem.@url}"
                x="10" y="10" fontSize="32"/>
        
        </mx:Repeater>
    </mx:VBox>
</mx:Application>


Le code du composant :
CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml" label="{_Text}"
    icon="@Embed(source={UrlIcon})">

    <mx:Script>
        <![CDATA[
            [Bindable] public var _Id:String;        
            [Bindable] public var _Text:String;
            [Bindable] public var UrlIcon:String;
            
           // [Embed(source=UrlIcon)]    
            //[Bindable]private var icon_category : Class;
                           
        ]]>
    </mx:Script>                
</mx:LinkButton>


Quelqu'un a une idée pour resoudre le probleme?
merci smile.gif
Moustik78
<mx:Repeater id = "myrepeater1" dataProvider="{mesicones.icone}">


C'est pas plutôt "icon" au lieu de "icone"?
Kakky
non Moustik, c'est bien "icone", regarde son XMl ^^ (il prend le nom du noeud, qui est bien icone)
Moustik78
Ah oui exact, au temps pour moi, me suis planté :/
Kakky
bref ^^

pour en revenir à ton problème :
Essaie déjà ça :
CODE
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml" label="{_Text}"
    icon="{icon_category}">

ton attribut icon doit etre une classe, donc tu dois lui donner ta classe icon_category, et non l'url directe de l'image.


im_shinji
merci pour votre intérêt au probleme icon_smile.gif
j'ai testé ce code :
CODE
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml" label="{_Text}"
    icon="{icon_category}">

Ca passe mais il reste comme méme un probleme, le chemin de la source dans la class embedded n'ai pas accepté.
CODE
     [Bindable] public var UrlIcon:String;
            
     [Embed(source = UrlIcon)] //erreur     
//'UrlIcon' does not have a recognized extension, and a mimeType was not provided
  
     [Bindable]private var icon_category : Class;

icon_confused.gif
Fusion
CITATION(im_shinji @ Jun 18 2007, 10:01 PM) *
[Embed(source = UrlIcon)] //erreur
//'UrlIcon' does not have a recognized extension, and a mimeType was not provided


Le problème ici est que le Embed attend un nom de fichier. Il te dit "does not have a recognized extension" car il attend une string de type "image.jpg", autrement dit, un nom de fichier en dur. Tu ne pourras pas lui fournir une string avec le nom de fichier, car il va traiter la chaîne de caractère de ta variable, et non le contenu. Comme dans le cas présent icon_razz.gif car "UrlIcon" n'a pas d'extension.

En résumé, c'est chiant, mais si tu fais un Embed, tu ne pourras pas lui donner le nom à l'exécution, ni en changer ; tout se fera à la compilation.

Essaie plutôt une solution avec des <mx:Image > pour charger des images dont tu ne connais les noms qu'à l'exécution (en plus ce sera plus léger en mémoire, chaque Embed reste en mémoire jusquà fermeture du Flash).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.