圆形公式的运用 |
| 作者:佚名 来源:闪吧 作者: 龙族酷少 更新:2007-1-13 20:48:58 错误报告 我要投稿 |
在FLASH编程中,经常要用到圆形公式,我们可以使用三角函数公式来表示一个圆形,比如让一个影片或物体绕圆形轨道旋转,就要将这个物体的坐标用三角函数来表示,或者用圆形的坐标公式也可以实现,就是圆心是原点的圆形上的点的X坐标和Y坐标的平方和等于半径的平方,当然圆心不在原点的时候,只要将点的XY坐标分别减去圆心的XY坐标就可以了。下面根据两个例子分别介绍这两种情况: 思路一:新建一文件,然后新建一影片,拖到主场景以后,选中影片,在动作面板中写:
onClipEvent(load){ j = 0; r = 50; x0 = 200; y0 = 200; } onClipEvent(enterFrame){ j-=40; this._x = x0 + r*Math.cos(j/(180/Math.PI)); this._y = y0 + r*Math.sin(j/(180/Math.PI));//这里就是将影片的XY坐标用圆的三角函数表示 }
点击浏览该文件
点击浏览该文件
思路二:好象有位朋友问过这个问题,就是拖动一个四边形的一个端点,保持各个边都不变,就是平行四边形,这时候我们应该考虑用圆形公式来解决,就是让四边形可拖动的这个点限制在一个圆形的轨道上运动,这样,边长就始终等于圆的半径了,也就达到目的了
新建四个影片,拖到主场景中,分别命名为 a b c d ,然后在第一桢上写:
_root.onLoad = function(){ a._x=b._x=100; a._y=d._y=100; b._y=c._y=200; d._x=c._x=300; } _root.onEnterFrame = function() { clear(); lineStyle(2,0xff0000,50); moveTo(a._x, a._y); lineTo(b._x, b._y); lineTo(c._x, c._y); lineTo(d._x, d._y); lineTo(a._x, a._y); updateAfterEvent(); }
然后,选中,右上角的点,也就是影片D,在动作面板中写:代码比较简单,关键是思路
on (press) { this.startDrag(true,200,100,400,300); } on (release, releaseOutside) { this.stopDrag(); } onClipEvent (enterFrame) { _root.a._x = _root.d._x-200; _root.a._y = _root.d._y; if(_root.d._y<200){//下面两句是关键,就是根据圆形的坐标公式得到的,中学里就学过了 _root.d._y = 200-Math.sqrt(10000-Math.pow(_root.d._x-300,2)); } else{ _root.d._y = 200+Math.sqrt(10000-Math.pow(_root.d._x-300,2)); } }
看看效果:
点击浏览该文件
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |