使用flash as3代码来画图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般来说要使用类的属性、方法和事件,需要先创建类的实例,但是Graphic s类不允许用户自己来创建实例,那 么如何使用Graphic s类的方法?
在显示类Shape类和Sprit e类中,有一个Graphic s属性,这个属性就是Graphic s类的实例。也就是说要使用 Graphic s类的方法,不能直接创建
绘图:通过 Shape 对象的 graphics 属性来执行矢量绘图命令 1、使用 lineStyle() 定义画图的线条样式 2、moveTo() - 设置当前绘画点;
lineTo() - 以当前绘画点为起点,用当前定义的线条样式,画一条直线到目标点; curveTo() - 指定二次贝塞尔曲线的控制点和终点,从而完成曲线的绘制; drawRect() - 绘制矩形; drawCircle() - 绘制圆形; drawEllipse() - 绘制椭圆; 3、beginFill() 和 endFill() 用于填充他们之间所绘制的图形。 beginGradientFill 和 endFill() 用于渐变填充对应的方法。
使用with()函数来简化:
wit h(t his.graphic s) {
graphics.lineStyle(2, 0x990000, .75); graphic s.beginFill(0x00FF00);
graphic s.moveT o(100,200); graphic s.lineT o(200,100); graphic s.lineT o(0,100); graphic s.lineT o(100,200); }
Graphic s类的实例,而是先创建Shape类或Sprit e类的实例,此时的显示实例就具有Graphic s,而Graphic s属性是 Graphic s类的实例,通过
Graphic s属性就可以调用绘图的方法。
另外,由于MovieClip类继承了Sprite类,所以也可以在MovieClip类的实例中绘图。在实际应用中应该使用 Shape类来绘制图形,因为Shape类只有graphic s属性和构造方法,所以绘制图形的效率更高。只有需要图形的交 互功能时,再使用Sprite类和MovieClip类。
转换:通过设置对象的 transform.matrix 属性,对其做相应的转换 Matrix.rotate() - 旋转的角度 Matrix.translate() - 平移的距离 Matrix.scale() - 缩放的比例 Matrix.b - 将矩阵垂直倾斜 Matrix.c - 将矩阵水平倾斜
with (g) {
lineStyle(2, 0x990000, .75); beginFill(0x00FF00);
moveT o(100,200); lineT o(200,100); lineT o(0,100); lineT o(100,200); } }
绘图程序
在界面上放置 8 个 Button 名称分别为:btnLine, btnCurve,来自百度文库btnRectangle, btnCircle, btnEllipse, btnLiner, btnRadial, btnClea 分别用于演示:画直线,画曲线,画矩形,画圆形,画椭圆,线性渐变填充,放射性渐变填充,清除图形
编写绘图代码也要讲技巧 如三角形的代码:(使用前80后的绘制三角形代码)
this.graphics.lineStyle(2, 0x990000, .75); t his.graphic s.beginFill(0x00FF00);
t his.graphic s.moveT o(100,200); t his.graphic s.lineT o(200,100); t his.graphic s.lineT o(0,100); t his.graphic s.lineT o(100,200);
代码中的t his引用主时间轴,主时间轴是MovieClip类的实例,所以t his具有graphic s属性,通过点语法就能访问 graphic s属性。同时,graphic s属性又引用Graphic s类的实例,通过点语法就能调用方法。
如果像上面的类似代码很多,需要重复编写"t his.graphic s",这样的代码,而且点语法的运算速度也不是很快。 就要对它进行优化。
在编写测试绘图代码时,可在主时间轴直接进行。在实际应用中绘图代码最好放在单独的Shape类中,如果图形 复杂,要创建显示容器来放置图形。
var sp:Shape = new Shape(); this.addChild(sp); drawLine(t his.graphic s); function drawLine(g:Graphics):void {
利用wit h()函数,只需访问一次t his.graphic s属性,就可以多次调用绘图方法。
使用自定义函数简化:
drawLine(t his.graphic s) function drawLine(g:Graphics):void {
g.lineStyle(2, 0x990000, .75); g.beginFill(0x00FF00);
g.moveT o(100,200); g.lineT o(200,100); g.lineT o(0,100); g.lineT o(100,200); }
代码中定义了drawLine()函数,它带有数据类型为Graphic s的参数,表示此参数是Graphic s类的实例,通过实 例和点语法就可以调用相应的绘图方法。在调用函数时只要把引用Graphic s类的实例传递进去。
通过AS3.0可以方便的在场景中绘制各种图形,相对于提前绘制编译好的图形,使用代码绘制图形意为着更小的文 件尺寸,更加灵活的绘制和交互性。
Flash中的绘图是通过Graphic s来实现的,Graphic s类是直接继承了Objec t 类,具有很多的绘图方法,大致分为 两类:
一是定义绘图样式的方法 二是用于绘制和清除图形的方法。 有关样式的方法包括线条的样式和填充样式两类。 有关绘图方法包括绘制和绘制开头两类。
相关文档
最新文档