您现在的位置: 圆点视线 >> 教程 >> flash教程 >> Action应用 >> 文章正文
[组图]Flash ActionScript绘制动态曲线           ★★★
Flash ActionScript绘制动态曲线
作者:hairan  文章来源:yesky  点击数:  更新时间:2008-7-31 17:27:32 
 页面功能:【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口 【字体:

对称:
  例如一个圆,要做到用as来绘制,是十分难的,最上面提到的最简单的代码,如果你用手动尝试来一次次试验,犹如像爱迪生一样屡屡失败,无法达到预期的效果,在这个问题之前应该看一下例图:

  

Flash AS曲线的绘制


  我们会发现曲线为对称时,曲线的控制点也在两端点连线的垂直平分线上,那么我们就来讨论如何得到以中点垂直直线所得到的线上的任意点吧! 

  垂直平分线上的任意点:
  对于几何,大家可以很简单的得到这个问题的答案 但是大家想想看,如果对于任意角度的线段由as来得到显然有点难度。毕竟是编程,没有什么难不倒大家的,我们找找材料吧。发现了!flash8里面内置了一个类point,其实这个类很简单,如果大家只是为了冲着point类而生成flash8的文件,那就太浪费了,因为这个类完全可以自己写,我在最下面把它整理上来,帮助大家使用[这个类我结合了vect2d和point两个方法总结到一起,大家别嫌代码多啊 呵呵]。中点那个方法是point.verticalPoint(点1,点2,与中点的距离[可以为正/负])。这个函数的原理我不知道是不是最方便的。在此把思路告诉大家,取任意两点AB,得到其中点O,将AB点分别复制为A'B'点并让此克隆点[clone方法],以原来的点旋转[即A'相对B旋转,B'相对A点旋转],得出此新的两点,进一步又得到两个新点的中点O',如图:


Flash AS曲线的绘制


  再在OO'上取相对O定长的点很容易。再回到刚才的问题上来就很容易解决对称曲线的问题了。曲线真是一种很奇妙的东西,com_zszen是我的自定义类包[pakage适合flash7以上版本],里面包括了一个math类和一个point类,你可以通过研究我的代码来达到学习的目的。

  注意:关于闭合以及非闭合平滑过渡曲线的绘制,显然你通过找点是无法实现的,或是说你无从下手,也就是说给你两个以上的点,他们的曲线控制点是任意的,也就是说你第一个点决定了你的去曲线的行走方式.所以这样显然不能得到我们想要的曲线。所以我认为应该从曲线的控制点考虑,也就是说曲线的控制点如果都已知,那么就ok了。
      我的方法是建立一个方程 以p1=curveX(target,p1,p2,p3),将追踪得到新的控制点,当然第一次运行不会绘制上来,也就是说运行此程序还存在效率问题,就是n个点的闭合曲线要运行n+1次,n个点的非闭合曲线要运行n次,而非闭合的起始点就成为了无法绘出的曲线位置,我的这个程序对于精确的曲线运算,没有足够的重视,如果说实现一些效果,应当是可以的,[其中用过联想广告的噪音声波图]。     

static function curvePlus(path:MovieClip, a1, control1, control2, doNoDraw:Boolean) {
                path.moveTo(a1.x, a1.y);
                var c1 = new point(control1.x, control1.y);
                var c2 = new point(control2.x, control2.y);
                var m = point.interpolate(c1, c2, 0.5);
                if (doNoDraw == true) {
                        return (m);
                }
                path.curveTo(c1.x, c1.y, m.x, m.y);
                //curveTo(c2.x, c2.y, a2.x, a2.y);  
                return (m);
        }



用鼠标在空白处划动 你将看到平滑的曲线

上一页  [1] [2] 

 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 文章录入:hairan    责任编辑:hairan  【字体:
 
  • 上一篇文章:

  •  
  • 下一篇文章: 没有了
  • 最新文章
    相关文章
    没有相关文章
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
     姓  名: 评 分: 1分 2分 3分 4分 5分
     评论内容: ·严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
    ·用户需对自己在使用本网服务过程中的行为承担法律责任
    ·本站管理员有权保留或删除评论内容。
    ·评论内容只代表机友个人观点,与本网站立场无关。
     
    最 新 推 荐
     
    百度主题推广
    最 新 热 门