用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
·好听的歌 ·火影忍者 ·繁体字转换 ·在线听歌 ·火影忍者漫画 ·最新歌曲 ·psp游戏下载 ·photoshop ·火星文 ·音乐网 ·歌曲下载 ·在线音乐 最新网络游戏
当前位置 :首页>flash教程>Flash动画教程>列表

flash中如何通过多点绘制光滑曲线

[来源:闪吧 | 作者:ywxgood | 时间:2008-06-23 | 点击:  | 收藏本文  【 】]

问题:有n个随机点,需要用光滑曲线将起连接起来,曲线看上去要有一定的曲度?

思路1:从第一个点穿过第二个点到第三个点绘制曲线,然后再穿过第四个点到第五个点绘制曲线,穿过第六个点到第七个点。。。这样可以看出来,点的个数n比为奇数,才可以画到终点,暂设置n=9。

var numPoints = n;//n必为奇数,暂设为9
//创建随机点构成的一个数组
var points:Array = new Array();
for(var i=0;i<numPoints;i++){
   points[i] = {};
   points[i].x = Math.random()*stage.width;
   points[i].y = Math.random()*stage.height;
}
//设置笔触样式
lineStyle(1);
//移动笔到第一个点
moveTo(points[0].x,points[0].y);
//循环每一个相邻的后续对画曲线
for(i=1;i<numPoints;i+=2){
   curveTo(points[i].x,points[i].y,points[i+1].x,points[i+1].y);
}

思路2:在每两个点之间插入一个新的点,位于原两点之间,用所插入的点为每条曲线的起始点和终点,用原来的点作为控制点画曲线,这样没有点的个数必为奇数的限制,且画出来的曲线比第一种方法的曲线更加“好看”。如下图:

空心白点为原来的点,黑色实心点为插入的新点(图片来源:http://lovejulia.cn/blog/article.asp?id=107,参考:http://lovejulia.cn/blog/article.asp?id=107http://blog.sina.com.cn/s/blog_3ecb9b1101008z9g.html

从图上看出,第一个插入的点,与最后一个插入的点没有用到,也就是说没有用来作为任何控点和终点,所以只需要在第二个点和倒数第二个点之间插入新点,算法如下:

var numPoints = n;
var points:Array = new Array();
for(var i=0;i<numPoints;i++){
   points[i] = {};
   points[i].x = Math.random()*stage.width;
   points[i].y = Math.random()*stage.height;
}
lineStyle(1);
moveTo(points[0].x,points[0].y);
//在第二个点与倒数第二个点间插入新点,并绘制曲线
for(i=1;i<numPoints-2;i++){
   var xc = (points[i].x+points[i+1].x)/2;
   var yc = (points[i].y+points[i+1].y)/2;
   //i从1开始的,即第一个控点是原来的第二个点,终点(xc,yc)为原第二个点与第三个点间插入的新点,即第一个插入的点。。。循环结束i=numPoints-2,即还剩下两个点没有画线
   curveTo(points[i].x,points[i].y,xc,yc);
}
//追加最后一条曲线(倒数第二个点为控点,最后一个点为终点)
curveTo(points[i].x,points[i].y,points[i+1].x,points[i+1].y);
总结:思路1中是经过每个原始点画曲线,但必须要求点的个数为奇数,且最小给定点个数为 三,画出来的曲线可以看出明显的衔接,曲度不够,不是要求的曲线;思路2中的曲线只是经过了第一个点和最后一个点,中间的点是根据原有点来插入的点,也就 是说并没有经过给出的点,而是经过由给出点所得出的新点,这种方法得出的曲线没有点数必为奇数的限制,且曲度也可以达到要求。
文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:Flash鼠绘马蹄莲教程
下一篇:flash中河流的画法参考
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  相关文章
·动画中人物格斗的基本动作收集分
·卡通娃娃360度转身动画
·羽毛扇跟随鼠标动画效果
·Flash鼠绘入门第十三课:绘制美
·Flash鼠绘入门第十一课:可爱瓢
·Flash鼠绘入门第十课:绘制娇艳
·Flash鼠绘入门第九课:绘制漂亮
·Flash鼠绘入门第八课:绘制脱俗
·Flash鼠绘入门第七课:绘制一串
·Flash鼠绘入门第六课:青翠竹子
  热门文章
·Flash进度条的制作详细讲解(组图)
·flash幻灯片网页效果
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·flash水影效果字
·Flash打造简单的飘雪动画视觉特效
·FLASH+XML相册(附源码)
·超酷flash光晕移动效果
·Flash旋转拖尾文字效果的制作教程
·Flash制作大雪纷飞效果动画
·flash春雷闪电效果

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 边做边爱 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 类似爱情 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 晴天娃娃 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 守护天使 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号