2010/08/06 | AS3代码练习 运动的曲线
类别(Flash课件设计) | 评论(3) | 阅读(979) | 发表于 21:23

    大体的方法和前面画线是一致的,不同的是,画曲线需要用到控制点,那么为了将曲线平滑连接,将运动的位置点当做控制点,各个点的中点当成是曲线的起点和终点,这样问题就解决了。代码如下:

var ballArr = new Array();

for (var i=0; i< 6; i++) {
 var ball = new Ball();
 addChild( ball );
 ball.x = 100;
 ball.y = 100;
 ball.vx = Math.random() * 10 + 5;
 ball.vy = Math.random() * 10 + 5;
 //ball.alpha = 0;

 ball.addEventListener(Event.ENTER_FRAME,onMove );

 ballArr.push( ball );
}
function onMove( evt:Event ) {
 var obj = evt.target;
 if (obj.x <= 0 || obj.x >= stage.stageWidth) {
  obj.vx =  -  obj.vx;
 }
 if (obj.y <= 0 || obj.y >= stage.stageHeight) {
  obj.vy =  -  obj.vy;
 }
 obj.x += obj.vx;
 obj.y+=obj.vy;
}

var paper:Sprite = new Sprite();
addChild(paper);
var pen:Graphics=paper.graphics;

paper.addEventListener(Event.ENTER_FRAME,onDrawLine);

function onDrawLine(evt:Event) {
 pen.clear();
 pen.lineStyle(2,0xff0000);

 pen.moveTo( (ballArr[0].x + ballArr[ballArr.length -1].x)/2 ,(ballArr[0].y+ballArr[ballArr.length -1].y)/2);
 for (var i=1; i< ballArr.length-1; i++) {
  pen.curveTo( ballArr[i].x,ballArr[i].y,
  (ballArr[i].x+ballArr[i+1].x)/2,
  (ballArr[i].y+ballArr[i+1].y)/2);
 }
 pen.curveTo( ballArr[ballArr.length -1].x,ballArr[ballArr.length -1].y,
 (ballArr[ballArr.length -1].x + ballArr[0].x)/2 ,
 (ballArr[ballArr.length -1].y+ballArr[0].y)/2);
}

短时间内不会去聊天室了,今年的暑期课就此结束,祝大家学习快乐~~

0

评论Comments(3条)

独自行走
独自行走
2014/12/16 20:30:32
地板
网站断了很长时间,我也很久没动flash了,哈哈。
[黄山松]
[黄山松]
2014/11/25 14:54:16
板凳
独自行走老师:拐点问题已经解决了,只要将循环体中的变量i的初始值i=1改为i=0就ok了.盼望这老师写出更好的实例教程,快点更新博客吧。谢谢老师!
[游客94]
[游客94]
2014/11/25 14:25:37
沙发
谢谢独自行走老师,给我们提供了这么好的实例教程。只是这个效果好像还是有一个拐点,曲线不光滑,应该可以改进的吧?
<< 1

发表留言post

用 户Name:
密 码Password:
内 容Comment:
http://www.5d.cn/images/size_down.gif http://www.5d.cn/images/size_up.gif
验 证Verify: