5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:山东
性别:先生
最后登录:2011-01-05
http://xbzg.5d.cn/
专注于Flash+FMS开发...通过Google搜索西部之光Software
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2005/05/28 | FLASH中的angle和_rotation
类别(Flash)
|
评论
(1)
|
阅读(1375)
|
发表于 15:39
曾有位朋友发给我一个源文件,让看看哪里出了毛病。。。
他的原意是用方向键控制一球上下左右移动,在每一球上加以下代码:
onClipEvent (enterFrame) {
if(Key.isDown(Key.RIGHT)){
_x+=5; }
if(Key.isDown(Key.LEFT)){
_x-=5;
}
if(Key.isDown(Key.UP)){
_y-=5;
}
if(Key.isDown(Key.DOWN)){
_y+=5;
}
}
并想让一指针始终指向该球,主时间轴第一帧加入以下代码:
xx = bb._x - aa._x;
yy = bb._y - aa._y;
bbb = Math.atan2(yy,xx) * 180 /Math.PI aa._rotation+=(bbb-aa._rotation)/10
并将主时间轴延长至2帧。。
但测试的时候是不行的。。。
我将代码稍微改了一下:
xx = bb._x - aa._x;
yy = bb._y - aa._y;
bbb = Math.atan2(yy,xx) * 180 /Math.PI+90 aa._rotation=bbb
测试正常。。。
但他还需要一个由快到慢的转动效果。。。
于是我又将代码做了修改:
xx = bb._x - aa._x;
yy = bb._y - aa._y;
bbb = Math.atan2(yy,xx) * 180 /Math.PI+90 aa._rotation+=(bbb-aa._rotation)/10
测试时,在一二三象限(以指针为坐标轴原点)正常,但到了第四象限,指针乱转。。。
什么原因呢???
我用trace(bbb)和trace(aa._rotation)进行了测试发现二者在一二三象限都是相等的,但在第三象限就不相等了。。。
即使用aa._rotation=bbb来强制二者相等,trace(bbb)和trace(aa._rotation)的结果也不一样。。。
二者在第四象限的时候差360。。。
于是我又做了以下修改:
xx = bb._x - aa._x;
yy = bb._y - aa._y;
bbb = Math.atan2(yy,xx) * 180 /Math.PI+90
if(bbb>=180&&bbb<=270){
m=(aa._rotation+360)
if(m>=360){
m=m-360
}
aa._rotation+=(bbb-m)/10
}else{
aa._rotation+=(bbb-aa._rotation)/10
}
哈。。。
这一次测试成功。。。
0
评论
Comments
日志分类
首页
[186]
Flash
[84]
FMS
[41]
AIR
[2]
ASP
[11]
作品区
[12]
其他
[36]