flash的坐标轴和数学当中的坐标轴不一样,如下图
今天项目中用到了时时动态曲线图的功能,因为平时项目很少用到as3.0。所以比较生疏,只能霸王硬上弓了。结果一开始就让我遇到一些低级错误。记录下来,留作以后参考。
刚开始时,想画一个简单的曲线。代码如下:
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Main extends MovieClip{
public var Width:int=550;
public var Height:int=400;
public var PointX:int=0;
public var PointY:int=0;
var Map:Sprite=new Sprite();
public function Main() {
CreateMap();
}
public function CreateMap()
{
this.Map.width=this.Width;
this.Map.height=this.Height;
this.Map.x=this.PointX;
this.Map.y=this.PointY;
this.addChild(this.Map);
this.Map.graphics.clear();
this.Map.graphics.lineStyle(1,0xff0000);
this.Map.graphics.moveTo(0,0);
this.Map.graphics.lineTo(0,20);
this.Map.graphics.lineTo(10,20);
this.Map.graphics.lineTo(20,40);
this.Map.graphics.lineTo(30,50);
}
}
}
结果,曲线怎么都显示不出来。当时非常的郁闷。后来请教了一些朋友,只要注释掉 this.Map.width=this.Width; this.Map.height=this.Height;这两句代码就可以了。想不通为什么?希望有高手能帮我解答
犯的第二个低级错误,发生在graphics.beginFill,.graphics.endFill()上。代码如下:
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Main extends Sprite {
public var Width:int=550;
public var Height:int=400;
public var PointX:int=0;
public var PointY:int=0;
var Map:Sprite=new Sprite();
public function Main() {
CreateMap();
}
public function CreateMap()
{
//this.Map.width=this.Width;
//this.Map.height=this.Height;
this.Map.x=this.PointX;
this.Map.y=this.PointY;
this.addChild(this.Map);
this.Map.graphics.clear();
this.Map.graphics.beginFill(0xff0000,1);
this.Map.graphics.lineStyle(1,50);
this.Map.graphics.endFill();
}
}
}
结果显示出来的是填充过的图形,当时怎么愣是没想明白,我画线怎么出来这奇怪的图案。后来还是经朋友提点。beginFill——自动闭合、并填充。