なぜかFlex3
Flexのチャートを使ってみた。
それからもうひとつの課題として動的にコントロールを配置してみたい、っていうのがあったので、途中からAS側でチャートを作るように変えてみた。
○ここまでやった感想
型宣言はあるけど、書いてる感覚はJavaScriptとそんなに変わらない気がする。
コントロールがhtmより豊富とはいえ、僕が仕事でも使いそうな範囲でいえばHTML+CSS+Javascriptで十分かもしれない。
が、チャートは別。Flexなら簡単に出せるけど、これをブラウザの範囲でやるので辛い。
Flexだとベンダ依存になるのはいやだけど、いまさらそれを言ってもなぁ。
<?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script source="HelloWorld.as" /> <mx:Button id="btn" label="execute" rollOver="doZoom(event)" rollOut="doZoom(event)" /> <!-- <mx:PopUpButton id="pop" label="チャートの選択" creationComplete="initMenu();" width="135" /> --> <mx:Zoom id="zoomAll" zoomWidthTo="2" zoomHeightTo="2" zoomWidthFrom="1" zoomHeightFrom="1" /> <mx:Panel id="pan" title="sample chart" width="100%" height="100%"> <!-- <mx:LineChart id="chart" width="100%" height="100%" > <mx:horizontalAxis> <mx:CategoryAxis categoryField="month"/> </mx:horizontalAxis> <mx:series> <mx:Array> <mx:LineSeries yField="data1" form="curve" /> <mx:LineSeries yField="data2" form="curve" /> </mx:Array> </mx:series> </mx:LineChart> --> </mx:Panel> </mx:Application> <flex-config> <output>bin/HelloWorld.swf</output> <default-size> <width>400</width> <height>300</height> </default-size> <default-frame-rate>60</default-frame-rate> <default-background-color>0x000000</default-background-color> </flex-config>
import mx.controls.Alert; import flash.events.MouseEvent; import mx.events.*; import mx.charts.series.*; import mx.charts.*; public var zingerManufacturingData:Array = [ {month: "一月",data1:3,data2: 1}, {month: "二月",data1:5,data2: 9}, {month: "三月",data1:3,data2: 4}, {month: "四月",data1:4,data2: 8}, {month: "五月",data1:7,data2: 5}, {month: "六月",data1:7,data2: 5}, {month: "七月",data1:4,data2: 3}, {month: "八月",data1:3,data2: 7}, {month: "九月",data1:5,data2: 2}, {month: "十月",data1:6,data2: 4}, {month: "十一月",data1:4,data2: 2}, {month: "十二月",data1:8,data2: 8} ] // private function initMenu():void {;;;; // myMenu = new Menu(); // var dp:Object = [{label:"グラフ"}, {label:"ライン"}]; // myMenu.dataProvider = dp; // myMenu.selectedIndex = 0; // myMenu.addEventListener("itemClick", itemClickHandler); // pop.popUp = myMenu; // pop.label = myMenu.dataProvider[myMenu.selectedIndex].label; // } // private function itemClickHandler(event:MenuEvent):void { // var label:String = event.item.label; // popTypeB.text=String(label + "に移動しました"); // popB.label = "配置 :" + label; // popB.close(); // myMenu.selectedIndex = event.index; // } public var showMessage:Function = function(name:String):void { pan.removeAllChildren(); var chart:LineChart = new LineChart(); chart.id="chart"; chart.percentWidth = 100; chart.percentHeight = 100; var renderer:CategoryAxis = new CategoryAxis(); renderer.categoryField="month"; chart.horizontalAxis = renderer; var array:Array = new Array(); var ls:LineSeries=new LineSeries(); ls.yField="data1"; ls.setStyle("form","curve"); array.push(ls); chart.series = array; pan.addChild(chart); chart.dataProvider = zingerManufacturingData; } public function doZoom(event:MouseEvent):void { if (zoomAll.isPlaying) { zoomAll.reverse(); } else { zoomAll.play([event.target], event.type == MouseEvent.ROLL_OUT ? true : false); } }