Hatena::Groupactionscript

ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記

2008年08月02日 土曜日

折れ線グラフを作りたい(1)読み込んだデータでポイントを表示する

| 02:26 | 折れ線グラフを作りたい(1)読み込んだデータでポイントを表示する - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - 折れ線グラフを作りたい(1)読み込んだデータでポイントを表示する - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 折れ線グラフを作りたい(1)読み込んだデータでポイントを表示する - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 のブックマークコメント

とりあえず、点を表示してみるようにしてみた

課題

  • やっぱり「折れ線」がないと「折れ線グラフ」じゃないよね
  • 背景に目盛りが欲しい

package{
	import flash.display.*;
	import flash.text.*;
	import flash.filters.*;
	import flash.events.*;
	import flash.xml.*;
	import flash.net.*;

	public class GraphTest extends Sprite{
		//
		public var xmlPath:String;
		public var xmlData:XML;
		public var loader:URLLoader = new URLLoader();

		//
		public var Points:Array;

		//
		public var maxHeight:int = 300;

		public function GraphTest(){
			//xmlPath = getFlashvars();
			xmlPath = "./Analytics.xml";
			var req:URLRequest = new URLRequest(xmlPath);

			loader.load(req);
			loader.addEventListener(Event.COMPLETE, getXML);
		}

		// flashvarsの読み込み
		public function getFlashvars():String {
			var flashvars:Object = LoaderInfo(loaderInfo).parameters;
			var flashvarsStr:String = new String();
			flashvarsStr = flashvars["xml"];
			return flashvarsStr;
		}

		public function getXML(event:Event):void {
			xmlData          = new XML(loader.data);
			var tf:TextField = new TextField();
			for(var i:int = 0;xmlData.Point.length() > i; i++){
				//tf.appendText(xmlData.Point[i].Label + "\n");
				Point(
					int(xmlData.Point[i].Value),
					i,
					xmlData.Point.length(),
					xmlData.Point[i].Label
				);
			}
			//tf.mouseWheelEnabled = true;
			//addChild(tf);
		}

		public function Point(height:int, now:int, max:int, info:String):void {
			var p1:Sprite = new Sprite();
	
			p1.graphics.beginFill(0xcc0000);
			p1.graphics.drawCircle(0,0,10);
			p1.graphics.endFill();
		
			p1.x = 50 * (now + 1);
			p1.y = maxHeight - height;
		
			p1.addEventListener("mouseOut", function(event:MouseEvent):void {	
				p1.scaleX = 1;
				p1.scaleY = 1;
			});
			
			p1.addEventListener("mouseOver", function(event:MouseEvent):void {	
				p1.scaleX = 2;
				p1.scaleY = 2;

				var infomation:TextField = new TextField();
				infomation.appendText(info);
				p1.addChild(infomation);
			});
			
			addChild(p1);
	
		}

	}
}

何倍も遅くなります

| 09:12 | 何倍も遅くなります - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - 何倍も遅くなります - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 何倍も遅くなります - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 のブックマークコメント

そうなんだ、と思ったエラー?

TextField に += を使用してテキストを追加すると、TextField.
appendText() メソッドを使用するよりも何倍も遅くなります。

そうでしたか...。

ゲスト



トラックバック - http://actionscript.g.hatena.ne.jp/d4-1977/20080802