资源描述:
《使用flash as3代码来画图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、通过AS3.0可以方便的在场景中绘制各种图形,相对于提前绘制编译好的图形,使用代码绘制图形意为着更小的文件尺寸,更加灵活的绘制和交互性。Flash中的绘图是通过Graphics来实现的,Graphics类是直接继承了Object类,具有很多的绘图方法,大致分为两类:一是定义绘图样式的方法二是用于绘制和清除图形的方法。有关样式的方法包括线条的样式和填充样式两类。有关绘图方法包括绘制和绘制开头两类。绘图:通过Shape对象的graphics属性来执行矢量绘图命令1、使用lineStyle()定义画图的线条样式2、moveTo()-设
2、置当前绘画点;lineTo()-以当前绘画点为起点,用当前定义的线条样式,画一条直线到目标点;curveTo()-指定二次贝塞尔曲线的控制点和终点,从而完成曲线的绘制;drawRect()-绘制矩形;drawCircle()-绘制圆形;drawEllipse()-绘制椭圆;3、beginFill()和endFill()用于填充他们之间所绘制的图形。beginGradientFill和endFill()用于渐变填充对应的方法。转换:通过设置对象的transform.matrix属性,对其做相应的转换Matrix.rotate()-
3、旋转的角度Matrix.translate()-平移的距离Matrix.scale()-缩放的比例Matrix.b-将矩阵垂直倾斜Matrix.c-将矩阵水平倾斜一般来说要使用类的属性、方法和事件,需要先创建类的实例,但是Graphics类不允许用户自己来创建实例,那么如何使用Graphics类的方法?在显示类Shape类和Sprite类中,有一个Graphics属性,这个属性就是Graphics类的实例。也就是说要使用Graphics类的方法,不能直接创建Graphics类的实例,而是先创建Shape类或Sprite类的实例,
4、此时的显示实例就具有Graphics,而Graphics属性是Graphics类的实例,通过Graphics属性就可以调用绘图的方法。另外,由于MovieClip类继承了Sprite类,所以也可以在MovieClip类的实例中绘图。在实际应用中应该使用Shape类来绘制图形,因为Shape类只有graphics属性和构造方法,所以绘制图形的效率更高。只有需要图形的交互功能时,再使用Sprite类和MovieClip类。编写绘图代码也要讲技巧如三角形的代码:(使用前80后的绘制三角形代码)this.graphics.lineSty
5、le(2,0x990000,.75);this.graphics.beginFill(0x00FF00);this.graphics.moveTo(100,200);this.graphics.lineTo(200,100);this.graphics.lineTo(0,100);this.graphics.lineTo(100,200);代码中的this引用主时间轴,主时间轴是MovieClip类的实例,所以this具有graphics属性,通过点语法就能访问graphics属性。同时,graphics属性又引用Graphic
6、s类的实例,通过点语法就能调用方法。如果像上面的类似代码很多,需要重复编写"this.graphics",这样的代码,而且点语法的运算速度也不是很快。就要对它进行优化。使用with()函数来简化:with(this.graphics){graphics.lineStyle(2,0x990000,.75);graphics.beginFill(0x00FF00);graphics.moveTo(100,200);graphics.lineTo(200,100);graphics.lineTo(0,100);graphics.lin
7、eTo(100,200);}利用with()函数,只需访问一次this.graphics属性,就可以多次调用绘图方法。使用自定义函数简化:drawLine(this.graphics)functiondrawLine(g:Graphics):void{g.lineStyle(2,0x990000,.75);g.beginFill(0x00FF00);g.moveTo(100,200);g.lineTo(200,100);g.lineTo(0,100);g.lineTo(100,200);}代码中定义了drawLine()函数,它
8、带有数据类型为Graphics的参数,表示此参数是Graphics类的实例,通过实例和点语法就可以调用相应的绘图方法。在调用函数时只要把引用Graphics类的实例传递进去。在编写测试绘图代码时,可在主时间轴直接进行。在实际应用中绘图代码最好放在单独的Shape