2009-06-26 8 views
0

Je travaille avec le CoverFlow library by Doug McCune.Ajout de composants à CoverFlow dans Flex

Dans l'exemple inclus, il a créé des panneaux à l'intérieur d'un CoverFlowContainer. Il existe d'autres exemples de lui remplir le flux de couverture d'un flux RSS sur la page liée ci-dessus mais il n'inclut pas la source de ceux-ci :(

Je vais éventuellement récupérer des données d'un service Web pour ajouter à la couverture Je commence avec cet exemple simple:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" horizontalAlign="center" verticalAlign="middle" xmlns:containers="com.dougmccune.containers.*" creationComplete="init()"> 
<mx:Script> 
    <![CDATA[ 

     import mx.controls.TextArea; 

     public var articlePanel:Panel = new Panel(); 
     public var articleTextArea:TextArea = new TextArea(); 

     private function init() : void 
     { 
      articlePanel.addChild(articleTextArea); 
      articlePanel.title = "test tile" 
      articleTextArea.text = "article1" + "\n" + "www.article.com" + "\n" + "hello this is article 1"; 
      coverflow2.addChild(articlePanel); 
     }  
    ]]> 
</mx:Script> 

<mx:VBox id="box" verticalGap="0" height="306" width="100%" maxWidth="600" maxHeight="300" > 

      <containers:CoverFlowContainer id="coverflow2" width="100%" height="244" 
      horizontalGap="40" borderStyle="inset" backgroundColor="0x000000" 
      segments="6" reflectionEnabled="true"> 

      <mx:Panel id="testpanel" width="200" height="200" title="Mxml title"> 
       <mx:DataGrid width="100%" height="100%"> 
        <mx:columns> 
         <mx:DataGridColumn headerText="Column 1" dataField="col1"/> 
         <mx:DataGridColumn headerText="Column 2" dataField="col2"/> 
         <mx:DataGridColumn headerText="Column 3" dataField="col3"/> 
        </mx:columns> 
       </mx:DataGrid> 
      </mx:Panel> 

      <mx:Panel id="buttonpanel" width="200" height="200" title="Mxml title"> 
       <mx:Button id="myButton" label="Change title" click="buttonpanel.title = ('hello') "/> 
      </mx:Panel> 
     </containers:CoverFlowContainer>     
    </mx:VBox> 
    </mx:Application> 

J'ai défini quelques panneaux dans le MXML et mis creationComplete=init() afin que le nouveau panneau que j'ai créé dans ActionScript sera ajouté au conteneur CoverFlow

.

Lorsque je lance l'application, elle affiche les deux panneaux prédéfinis mais pas celui que j'ai créé dans ActionScript.

Des idées? Existe-t-il une meilleure façon de le faire?

Répondre

0

fixe ce en définissant d'abord le récipient CoverFlow qui ne contient rien:

<containers:CoverFlowContainer id="coverflow" width="100%" height="244" 
       horizontalGap="40" borderStyle="inset" backgroundColor="0x000000" 
       reflectionEnabled="true"/> 

Dans la section actionscript je récupère un tableau à partir d'un service Web et pour chaque élément du tableau créer un panneau. Il est important de donner à chaque panneau une largeur et la hauteur sinon il n'affiche un élément dans le CoverFlow ou aucun élément du tout:

articlePanel.width = 200; 
articlePanel.height = 200; 
2

vous pouvez essayer mx: composant répéteur

<mx:HTTPService id="srv" url="pics.xml"/> 
<ns2:CarouselContainer id="cf" width="100%" height="303" horizontalGap="40" 
         segments="6" reflectionEnabled="true" angle="10" > 

    <mx:Repeater id="r" dataProvider="{srv.lastResult.images.image}"> 
     <mx:Canvas width="200" height="200"> 
      <mx:Image source="{r.currentItem.src}"/> 
     </mx:Canvas> 
    </mx:Repeater> 

</ns2:CarouselContainer> 
Questions connexes