Flex中动态生成问题

liuyyuns 2011-01-26 09:18:57
初学者疑问:我先申明一下,下面的代码是我在网上找的demo,我现在想把黄色字体的部分动态生成,该怎么实现啊,谢谢!

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
verticalAlign="middle"
backgroundColor="white"
creationComplete="//createFilters()"
backgroundGradientAlphas="[1.0, 0.0]"
width="700"
height="410"
borderColor="#EFF0F1"
borderStyle="outset"
themeColor="#D4E7FB"
backgroundGradientColors="[#DDDCDC, #E6E6E6]">

<mx:Script>
<![CDATA[
import mx.charts.chartClasses.IAxis;

[Bindable]
private var _DropShadowFilter:DropShadowFilter=new DropShadowFilter(2, 45, 0x000000, 0.7, 2, 2, 0.65, 3, false, false);

private function linearAxis_labelFunc(item:Object, prevValue:Object, axis:IAxis):String
{
return item + '%';
}

private function categoryAxis_labelFunc(item:Object, prevValue:Object, axis:CategoryAxis, categoryItem:Object):String
{
return String(item) + '月';
}

private function changeState(id:String):void
{
if (id == "one")
{
}
else if (id == "two")
{
}
else if (id == "three")
{
}
}
]]>
</mx:Script>
<mx:WipeRight id="wipeOut" duration="1000"/>
<mx:WipeRight id="wipeIn" duration="1000"/>
<mx:DividedBox width="98%"
height="399"
horizontalCenter="-1"
verticalCenter="-1"
backgroundColor="#FFFFFF"
backgroundAlpha="0.92"
borderColor="#83B6DA"
themeColor="#505050"
borderStyle="inset"
cornerRadius="17">
</mx:DividedBox>
<mx:CurrencyFormatter id="currFormatter"
precision="2"/>

<mx:Fade id="fadeOut"
duration="1000"
alphaFrom="1.0"
alphaTo="0.0"/>
<mx:Fade id="fadeIn"
duration="1000"
alphaFrom="0.0"
alphaTo="1.0"/>

<mx:XMLListCollection id="dp">
<mx:source>
<mx:XMLList>
<quote day="1"
act="40.29%"
close="50%"
tt="77%"/>
<quote day="2"
act="39.4%"
close="42.52%"
tt="53%"/>
<quote day="3"
act="59.47%"
close="10.75%"
tt="25%"/>
<quote day="4"
act="10%"
close="60.38%"
tt="52%"/>
<quote day="5"
act="39.08%"
close="80.42%"
tt="66%"/>
<quote day="6"
act="40%"
close="55.23%"
tt="78%"/>

</mx:XMLList>
</mx:source>
</mx:XMLListCollection>

<!-- Define Strokes -->
<mx:Stroke id="s1" joints="round" caps="square"
color="#28b224"
weight="1"/>
<mx:Stroke id="s2" joints="bevel"
color="#01D6FD"
weight="1"/>
<mx:Stroke id="s3" joints="miter"
color="#FC6103"
weight="1"/>
<mx:Stroke id="vSolid"
weight="1"
color="#D7D7D7"
alpha="0.1"/>
<mx:Stroke id="hSolid"
weight="1"
color="#D7D7D7"
alpha="0.3"/>
<mx:SolidColor id="vFill"
color="#D7D7D7"
alpha=".2"/>
<mx:SolidColor id="hFill"
color="#FFFFFF"
alpha=".1"/>
<mx:SolidColor id="tFill"
color="#ffffff"
alpha=".1"/>

<mx:LineChart id="lineChart"
showDataTips="true"
dataProvider="{dp}"
width="641"
height="320"
seriesFilters="[]"
themeColor="#037FFD"
fontSize="13"
x="27.5"
y="25">
<mx:backgroundElements>
<mx:GridLines direction="both"
horizontalTickAligned="true"
verticalTickAligned="false"
verticalShowOrigin="true"
horizontalShowOrigin="true"
verticalStroke="{vSolid}"
horizontalStroke="{hSolid}"
verticalFill="{vFill}"
horizontalFill="{hFill}"
verticalAlternateFill="{tFill}"
horizontalAlternateFill="{tFill}"/>
</mx:backgroundElements>
<mx:verticalAxis>
<mx:LinearAxis baseAtZero="false"
title=""
labelFunction="linearAxis_labelFunc"/>
</mx:verticalAxis>
<mx:horizontalAxis>
<mx:CategoryAxis id="ca"
categoryField="@day"
title=""
labelFunction="categoryAxis_labelFunc"/>
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{ca}"
canDropLabels="true"/>
</mx:horizontalAxisRenderers>
<!--
<mx:seriesFilters>
<mx:Array/>
</mx:seriesFilters>
-->
<mx:series>
<mx:LineSeries id="one"
yField="@act"
displayName="及时率"
lineStroke="{s1}"
showEffect="{wipeIn}"
hideEffect="{wipeOut}"
filters="{[_DropShadowFilter]}"
visible="{cone.selected}"/>
<mx:LineSeries id="two"
yField="@close"
displayName="接种率"
lineStroke="{s2}"
showEffect="{wipeIn}"
hideEffect="{wipeOut}"
visible="{ctwo.selected}"
filters="{[_DropShadowFilter]}"/>
<mx:LineSeries id="three"
yField="@tt"
displayName="合格率"
lineStroke="{s3}"
showEffect="{wipeIn}"
hideEffect="{wipeOut}"
visible="{cthree.selected}"
filters="{[_DropShadowFilter]}"/>
</mx:series>
</mx:LineChart>
<mx:CheckBox id="cone"
label="及时率"
x="540"
y="360"
fontSize="14"
color="#28B224"
fontWeight="bold"/>
<mx:CheckBox id="cthree"
label="合格率"
x="440"
y="360"
fontSize="14"
color="#FC6103"
fontWeight="bold"/>
<mx:CheckBox id="ctwo"
label="接种率"
x="340"
y="360"
fontSize="14"
color="#01D6FD"
fontWeight="bold"/>
</mx:Application>



...全文
385 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以动态生成,两种方法:
1. 从xml文件中载入
在外部编写xml文件
使用URLLoader载入文件,监听Event.COMPLETE方法获取载入数据。代码如下
   var loader:URLLoader=new URLLoader();
try {
loader.load(new URLRequest("resource/virus/virusUpdateChart.xml"));
}catch(error:Error) {
Alert.show("加载数据出错");
}
loader.addEventListener(Event.COMPLETE,function(event:Event):void {
var loader:URLLoader=URLLoader(event.target);
lineChart.dataProvider=XMLList(loader.data) ;
});

2. 通过后台程序传入调用
结构类似于上面,使用RemoteObject访问后台程序,然后对ResultEvent.RESULT进行监听
3. 在action script中声明
直接声明 var xmls:XMLList=<item name='2'><item name='1'>
PS:如果只是作为LineChart的 dataProvider,没有必要使用 xmlCollection封装XMLList,可以直接将XMList赋值给lineChart.dataProvider
liuyyuns 2011-01-26
  • 打赏
  • 举报
回复
为什么不回答呢?
liuyyuns 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aaafdsafdsa 的回复:]
哪里又黄色啊
[/Quote]
我加了黄色的标签,没好用。
liuyyuns 2011-01-26
  • 打赏
  • 举报
回复
下面的是黄色的部分:
<mx:XMLList>
<quote day="1"
act="40.29%"
close="50%"
tt="77%"/>
<quote day="2"
act="39.4%"
close="42.52%"
tt="53%"/>
<quote day="3"
act="59.47%"
close="10.75%"
tt="25%"/>
<quote day="4"
act="10%"
close="60.38%"
tt="52%"/>
<quote day="5"
act="39.08%"
close="80.42%"
tt="66%"/>
<quote day="6"
act="40%"
close="55.23%"
tt="78%"/>

</mx:XMLList>
  • 打赏
  • 举报
回复
哪里又黄色啊
liuyyuns 2011-01-26
  • 打赏
  • 举报
回复
我的可以获取外面的xml文件了:
xml文件的路径data/fruit.xml.
xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<data>
<result month="Jan-04">
<apple>81768</apple>
<orange>60310</orange>
<banana>43357</banana>
</result>
<result month="Feb-04">
<apple>71156</apple>
<orange>58883</orange>
<banana>49280</banana>
</result>
<result month="Mar-04">
<apple>80093</apple>
<orange>58343</orange>
<banana>43434</banana>
</result>
</data>



Flex代码如下:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="srv.send()">
<mx:Script><![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myData:ArrayCollection;
]]></mx:Script>

<mx:HTTPService
id="srv"
url="data/fruit.xml"
useProxy="false"
result="myData = srv.lastResult.data.result"
/>
<mx:Panel title="Line Chart">
<mx:LineChart id="chart" dataProvider="{myData}">
<mx:horizontalAxis>
<mx:CategoryAxis categoryField="month"/>
</mx:horizontalAxis>
<mx:series>
<mx:LineSeries yField="apple" name="Apple"/>
<mx:LineSeries yField="orange" name="Orange"/>
<mx:LineSeries yField="banana" name="Banana"/>
</mx:series>

</mx:LineChart>
</mx:Panel>
</mx:Application>

以上的代码都是测试通过的。不过由于时间问题,我目前只是实现的只是从xml文件里读取数据,以后要改成通过servlet到后台读取数据,然后返回成xml文件格式的数据。

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧