求助 数学不好 大神来看看这算出的是什么 !为什么要用这句代?
actionscript吧
全部回复
仅看楼主
level 2
lulukiki150 楼主
//计算图标的角度
enaAngle = atan2D(currentIcon.y,cosD(currentIcon.angle) * disy);
cosD(currentIcon.angle) * disy 这句计算出的是什么?
cosD是cos函数,currentlcon是影片剪辑,disy是椭圆在y轴上的截距。
不应该计算currentlcon的横坐标吗?
2014年07月13日 10点07分 1
level 4
这都是什么……一般不是直接用rotation就可以直接得到角度了么
2014年07月14日 03点07分 2
level 2
lulukiki150 楼主
下面是完整的代码
include "Math2.as"
stage.frameRate=30
var disx:Number=200
var disy:Number=10
var speed:Number=0
var endAngle:Number=90
var tempAngle:Number=0
var isRotating:Boolean=true
var menu:Sprite=new Sprite()
menu.x=275
menu.y=180
menu.addEventListener(Event.ENTER_FRAME,moveMenu)
this.addChild(menu)
initMenu(5)
function initMenu(n:int)
{
for(var i:int;i<n;i++)
{
var mc:MovieClip=new IconMenu()
mc.scaleX=mc.scaleY=.5
mc.addEventListener(MouseEvent.MOUSE_DOWN,startRotation)
menu.addChild(mc)
}
}
function initAngle(b:Boolean)
{
if(isRotating)
tempAngle+=speed
speed=0
isRotating=b
}
function startRotation(e:MouseEvent):void
{
var currentIcon:MovieClip=e.target
endAngle=atan2D(currentIcon.y,cosD(currentIcon.angle)*disy)
endAngle=(endAngle>-180&&endAngle<-90)?-270-endAngle:90-endAngle
initAngle(true)
menu.addEventListener(Event.ENTER_FRAME,moveMenu)
}
function moveMenu(e:Event):void
{
var iconCount:int=menu.numChildren
var depthArray:Array=new Array()
var angle:Number=360/iconCount
for(var z:int;z<iconCount;z++)
{
var mc:MovieClip=menu.getChildAt(z)
mc.gotoAndStop(z+1)
mc.angle=tempAngle+speed+angle*z
mc.x=cosD(mc.angle)*disx
mc.y=sinD(mc.angle)*disy
depthArray[z]=mc
setProp(mc,"alpha")
setProp(mc,"scaleX",.2,.7)
setProp(mc,"scaleY",.2,.7)
}
arrange(depthArray)
speed+=(endAngle-speed)*.2
if(Math.abs(speed-endAngle)<1)
{
menu.removeEventListener(Event.ENTER_FRAME,moveMenu)
initAngle(false)
}
}
function arrange(depthArray:Array):void
{
depthArray.sortOn("y", Array.NUMERIC)
var i:int = depthArray.length
while(i--)
menu.setChildIndex(depthArray[i], i)
}
function setProp(mc:MovieClip,prop:String,n1:Number=.5, n2:Number=1):void
{
mc[prop]=((mc.y+2*disy)/disy-1)/2*(n2-n1)+n1
}
math2.as:
function angleToRadian(angle:Number):Number
{
return angle*(Math.PI/180);
}
function radianToAngle(radian:Number):Number
{
return radian*(180/Math.PI);
}
function sinD(angle:Number):Number
{
return Math.sin(angleToRadian(angle));
}
function cosD(angle:Number):Number
{
return Math.cos(angleToRadian(angle));
}
2014年07月14日 09点07分 3
1