2009-06-26 9 views
0

私はCoverFlow library by Doug McCuneで作業しています。FlexでCoverFlowにコンポーネントを追加する

この例では、CoverFlowContainerの中にいくつかのパネルを作成しています。上にリンクされたページのRSSフィードからカバーフローを取り込む他の例がありますが、彼はこれらのソースを含んでいません:(

最終的にはカバーフローに追加するデータをWebサービスから取得します私はMXMLで、いくつかのパネルを定義し、私はActionScriptで作成した新しいパネルがCoverFlowのコンテナに追加されるようにcreationComplete=init()を設定している

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

:私はこの単純な例で始めています。

アプリケーションを起動すると、定義済みの2つのパネルが表示されますが、作成したパネルは表示されませんActionScript。

アイデア?これを行うより良い方法はありますか?

答えて

0

最初にそれに何もカバーフローコンテナを定義することによって、これを修正:ActionScriptのセクションで

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

私はパネルを作成し、アレイ内のWebサービスから、各項目の配列を取得。そうでない場合は、それが唯一のカバーフローや全くの要素に一つの要素が表示されます各パネルに幅と高さを与えることが重要である:

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

あなたがMXを試すことができます:Repeaterコンポーネント

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