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,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.graphics.endFill(); } } }
结果显示出来的是填充过的图形,当时怎么愣是没想明白,我画线怎么出来这奇怪的图案。后来还是经朋友提点。beginFill——自动闭合、并填充。