我正在使用CoverFlow library by Doug McCune。
在所包含的示例中,他在CoverFlowContainer
内创建了一些面板。还有其他一些例子,他从上面链接的页面上的RSS提要填充封面流程,但他没有包含这些内容的来源:(
我最终将从Web服务中检索数据以添加到封面流程中,但是我从这个简单的示例开始:
<?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>
我在mxml中定义了一些面板并设置了creationComplete=init()
,以便我在ActionScript中创建的新面板将添加到CoverFlow容器中。
当我启动应用程序时,它会显示两个预定义的面板,但不会显示我在ActionScript中创建的面板。
有什么想法吗?有没有更好的方法呢?
答案 0 :(得分: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>
答案 1 :(得分:0)
通过首先定义其中没有任何内容的coverflow容器来解决此问题:
<containers:CoverFlowContainer id="coverflow" width="100%" height="244"
horizontalGap="40" borderStyle="inset" backgroundColor="0x000000"
reflectionEnabled="true"/>
在actionscript部分,我从Web服务检索一个数组,并为数组中的每个项创建一个面板。重要的是给每个面板一个宽度和高度,否则它只会在封面流中显示一个元素或根本没有元素:
articlePanel.width = 200;
articlePanel.height = 200;