本人不姓“卢”,只是三十未立,取‘loser’的谐音,常常在英文影视剧里看到对某人蔑视的来一句‘You are nobody,just a loser! ’,在这个人人争当'winner'的时代,我常常觉得自己是被抛离的‘loser’,颈椎酸疼的写着代码,没有社交、没有休闲,我忘记了花开的样子,水流的声响。一个人过七夕,不能父母膝下承欢,尽一份孝道。为了让日子不那么荒芜我决定写一份总结性的教程,说是教程有些勉强,毕竟没有一个很完善的全局的梳理,只是把应用中涉及的问题实例总结一下,因为我理解那些为了一个小问题纠结的感受,我只是希望为那些用flex编写应用的人在遇到同样的问题时,可以在这里得到一点启发,少花一点时间,则善莫大焉了,我决定从flex3开始编写,用一个月左右的时间,每天一篇,之后可能会补充flex4的内容,先说3,再道4;这份文档一定是一个动态的,可能同一篇文章会不断的充实,删改,先‘授人以鱼’再争取‘授人以渔’。另外我会把引用的文档的地址列出,既是对原作者的尊重,也是让读者可以到原文档那里得到更多的收获,当然有些可能已经无法确定出处的地方,只能表示歉意,并对贡献者致谢。‘卢瑟(loser)’就是以最卑微、最悲壮的心态启航,愿读者皆‘温拿(winner)’。也许荒芜的日子依旧长不出鲜花,但至少要有一株韧草。
为什么要用Actionscript来创建坐标轴和混合图呢?这并非无关紧要的问题,我们在做一件事情之前要看看这件事应不应该做,或者值不值得做,而不是盲目去做,新东方的徐小 平(竟然告诉我是敏感词)写过一本《图穷对话录》,他是做留学咨询的,可是大部分时间感觉他在灌输这样一种观念:是否需要出国?而不是简单的告知你怎样出国。flex中mxml标签文件和actionscript的关系很像是Jsp和servlet的关系,mxml会被转成actionscript并编译,mxml方便了界面编写,但是也失去了一些灵活性,有一定的局限,例如:图形中的序列数量是动态的(可能是5条线也可能是8条线,各个线的颜色也是动态分配的);或者多个图形,基本主界面基本相同,但是略有差异,例如坐标轴有的是数值有的是百分比,如果把相似的图形每个都创建新的组件,就会大量的粘贴复制代码,如果一处要修改就要修改多处,这就是所谓的“代码腐 败”,这种腐 败会不断扩散。
接着说一下混合图,所谓混合图就是柱图和线图混合,一般要有两个坐标轴。如下图
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var data1:ArrayCollection=new ArrayCollection([{date: "10月1日", all: 4001.87}, {date: "10月2日", all: 4005.74}, {date: "10月3日", all: 4002.77}, {date: "10月4日", all: 4008.06},]);
[Bindable]
public var data2:ArrayCollection=new ArrayCollection([{date: "10月1日", sale: 157.59}, {date: "10月2日", sale: 158.23}, {date: "10月3日", sale: 150.71}, {date: "10月4日", sale: 156.88},]);
[Bindable]
public var data3:ArrayCollection=new ArrayCollection([{date: "10月1日", offer: 124.14}, {date: "10月2日", offer: 160.3}, {date: "10月3日", offer: 122.71}, {date: "10月4日", offer: 136.88},]);
]]>
</mx:Script>
<mx:Panel title="多轴图表"
fontSize="14">
<!--以柱形图表为基础, 第一类数据来源于data1
第二类数据来源于data2-->
<mx:ColumnChart id="myChart"
showDataTips="true"
fontSize="14">
<!--共用X轴,数据来源于data1中的date-->
<mx:horizontalAxis>
<mx:CategoryAxis dataProvider="{data1}"
categoryField="date"/>
</mx:horizontalAxis>
<mx:verticalAxis>
<!--设定左边Y轴坐标的数值范围 -->
<mx:LinearAxis minimum="4000.00"
maximum="4010.00"/>
</mx:verticalAxis>
<mx:series>
<mx:ColumnSeries id="cs1"
dataProvider="{data1}"
xField="date"
yField="all"
displayName="大盘指数"/>
</mx:series>
<mx:secondVerticalAxis>
<!--设定Y轴坐标的数值范围 -->
<mx:LinearAxis minimum="110"
maximum="170"/>
</mx:secondVerticalAxis>
<!--定义第二个Series -->
<mx:secondSeries>
<mx:LineSeries id="cs2"
dataProvider="{data2}"
xField="date"
yField="sale"
displayName="交易量"/>
<mx:LineSeries id="cs3"
dataProvider="{data3}"
xField="date"
yField="offer"
displayName="offer量"/>
</mx:secondSeries>
</mx:ColumnChart>
</mx:Panel>
</mx:Application>
参考文献:flex柱状图和折线图的混合图使用http://blog.csdn.net/zhongweijian/article/details/4692668