用drawPath自由绘制图形

作者: ladeng6666 分类: Flash 发布时间: 2012-08-10 07:09 阅读: 11,146

在Flash开发过程中,我们经常用ActionScript的绘图API绘制图形,比如:drawRect、drawCircle、drawTriangle等等,但这些都是写简单的对称图形,如果要绘制任意多边形时,这些函数就无能为力了。这时候,drawPath就是显示出威力了,首先我们一起来看看结构。

每个参数的功能如下:

  • commands:这是个vector数组,保存了当前点到下一个绘制点的绘制命令,只能是GraphicsPathCommand 类定义的命令,如LINE_T,MOVE_TO等。
  • data:同样是一个vector数组,它保存了绘制过程中所有的点,这个数组中每两个相邻的点分布表示一个点的x和y坐标。如data=new Array(x1,y1,x2,y2,x3,y3…),所以,它的长度时commands的两倍。
  • winding:使用 GraphicsPathWinding 类中定义的值指定缠绕规则。默认为”evenOdd”。

从drawPath的参数中可以看出,它的功能是用一组已有的绘制命令和绘制顶点来画一个路径,所以我们要做的是准备好这些命令和顶点。

在绘制时,依然是老套路,很听鼠标按下MOUSE_DOWN、弹起MOUSE_UP和移动MOUSE_MOVE事件。鼠标按下后、将绘制点移至鼠标位置,在鼠标移动时,实时绘制路径到鼠标位置,这个过程的数据分别存储到commands和data中后,这个两个数组大致如下:

然后把command和data船只drawPath的参数中,在这之前要记得用beginFill或beginBitmapFill等填充路径,这里我用的是beginBitmapFill,效果如下:

完整的代码和注释如下:

看过效果之后,你想到了什么?是不是多边形行贴图?哈哈,别着急,下一次我们就来讲这个话题。

 源代码下载

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

10条评论
  • 942Avril

    2012 年 9 月 3 日 下午 11:23

    这个效果不错呢!

    1. ladeng6666

      2012 年 9 月 4 日 下午 9:16

      这个效果更不错的呢

  • 经验收集网

    2012 年 9 月 7 日 上午 11:38

    文章写的不错,学习学习。。

    1. ladeng6666

      2012 年 9 月 7 日 下午 8:58

      谢谢支持!

  • 经验收集网

    2012 年 9 月 7 日 下午 5:55

    再来支持一下,哈哈..

    1. ladeng6666

      2012 年 9 月 7 日 下午 8:31

      谢谢支持!多来提意见啊!

  • 明日の空

    2012 年 9 月 10 日 下午 11:29

    看到好教程时,真想一口气看完啊,不过明天还得上班,哎..
    晚安拉登!

    1. ladeng6666

      2012 年 9 月 11 日 下午 8:51

      好学的小朋友,注意休息啊!

  • 鸿杰

    2012 年 10 月 1 日 上午 8:26

    哈哈,收录到我的工具包中了:)

    1. ladeng6666

      2012 年 10 月 22 日 下午 9:14

      谢谢关注!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注