曾有位朋友发给我一个源文件,让看看哪里出了毛病。。。
他的原意是用方向键控制一球上下左右移动,在每一球上加以下代码:
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
}
哈。。。
这一次测试成功。。。
他的原意是用方向键控制一球上下左右移动,在每一球上加以下代码:
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
}
哈。。。
这一次测试成功。。。
回复Comments
作者:
{commentrecontent}