博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flash 曲线部分
阅读量:6292 次
发布时间:2019-06-22

本文共 1741 字,大约阅读时间需要 5 分钟。

给出一些点比如:

[100,0], [110,120],[150,150],[90,220];

通过这些点画一条曲线。

分两种情况:1、这些点作为控制点画曲线。2、画出的曲线需要经过这几个点

这是两种不同的理解,因为curveTo绘制曲线:

curveTo(x1, y1, x2, y2),起点和lineTo 一样,同样是以上一次画线的终点做为本次画线的起点,也可以使用moveTo 命令指定画笔的起点,如果是第一次画线默认的起点为0,0。

可以看到, curveTo 函数中包括两个点。第一个是控制点影响曲线的形状,另一个是曲线的终点。这里使用的是名为二次方贝塞尔曲线的标准公式,该公式可以计算出两点间的曲线,这条曲线向着控制点弯曲。请注意,这条曲线不会与控制点接触,很像是曲线被它吸引过去的。(控制点是不在曲线上的)

 

通过例子说明两种情况:

 

第一种情况:(把这些点作为曲线的控制点)

var points:Array = new Array();

points[0] = new Object();
points[1] = new Object();
points[2] = new Object();
points[3] = new Object();

points[0].x=100,points[0].y=0;

points[1].x=110,points[1].y=120;
points[2].x=150,points[2].y=150;
points[3].x=90,points[3].y=220;

graphics.lineStyle(1);0000000000000

graphics.moveTo(points[0].x, points[0].y);

for (var i:int = 0; i < points.length-1; i ++) {

var xc:Number = (points[i].x + points[i + 1].x) / 2;
var yc:Number = (points[i].y + points[i + 1].y) / 2;
graphics.curveTo(points[i].x, points[i].y, xc, yc);
}

 

    

 

 

第二种情况:(这些点都在曲线上)

var points:Array = new Array();

points[0] = new Object();
points[1] = new Object();
points[2] = new Object();
points[3] = new Object();

points[0].x=100,points[0].y=0;

points[1].x=110,points[1].y=120;
points[2].x=150,points[2].y=150;
points[3].x=90,points[3].y=220;

graphics.lineStyle(1);

graphics.moveTo(points[0].x, points[0].y);

for (var i:int = 1; i < points.length-1; i ++) {

var xc:Number = (points[i].x*2-(points[i-1].x+points[i+1].x)/2);
var yc:Number = (points[i].y*2-(points[i-1].y+points[i+1].y)/2);

graphics.curveTo( xc, yc,points[i+1].x,points[i+1].y);
}

 

注意红色部分的代码公式:

 

x1 = xt * 2 – (x0 + x2) / 2;

y1 = yt * 2 – (y0 + y2) / 2;

x1,y1是实际控制点的位置,xt,yt是通过的目标点的位置,x0,y0是起点位置,x2,y2是终点位置

 

与上图的区别可见。

 

参照理解地址:

 

 

 

 

 

转载于:https://www.cnblogs.com/flashweb/archive/2012/09/15/2686839.html

你可能感兴趣的文章
jQuery - 左右拖动分隔条
查看>>
注入 - Ring3 APC注入
查看>>
NFS PRC端口映射器
查看>>
关于JAVA匿名内部类,回调,事件模式的一点讨论
查看>>
Windows 术语表(Windows Glossary)
查看>>
TOJ 4689: Sawtooth
查看>>
你会开会吗
查看>>
关于FAST比较全的博文
查看>>
SCVMM 安装
查看>>
iOSBlock和delegate的用法
查看>>
4.Azure创建点到站点的***隧道(下)
查看>>
怎样为用户写“招标书”
查看>>
python运维之轻松模拟开发FTP软件05
查看>>
Nginx配置proxy_pass转发的/路径问题
查看>>
总编下午茶:挑战者心态能否帮助微软重回云计算巅峰?
查看>>
理解并取证:广域网上的PPP协议
查看>>
动软分享社区系统实现个性化导购营销平台
查看>>
shell编程 字符串处理
查看>>
Cisco3560交换机enable密码破解和恢复出厂设置
查看>>
交换安全老师课堂笔记
查看>>