我现在正在做一个flash动画的学生。我是新手和算法。 我当前项目的问题是我动画的动画片段没有正确轨道运行,我正确地跟踪了视频,月球,地球,太阳的东西都有效。然而,使用这组特定的代码,我申请了我的项目,但似乎中心离我想要的中心很远。
视频链接:http://www.youtube.com/watch?v=HO2YvR1r-Bo
使用计时器而不是ENTER_FRAME
调用底部代码 function rocketMoving(){
var earthGravityX:Number = earth.x + (earth.width * .5) / 2;
var earthGravityY:Number = earth.y + (earth.height * .5) / 2;
sinrocket += .001;
cosrocket += .001;
rocket.x = Math.sin(sinrocket * orbitSpeed1) * earthOrbitDiameter - earthGravityX ;
rocket.y = Math.cos(cosrocket * orbitSpeed1) * earthOrbitDiameter - earthGravityY ;
rocket.rotation = (Math.atan2(rocket.y-earth.y, rocket.x-earth.x) * 180 / Math.PI);
}
答案 0 :(得分:0)
听起来您已将注册点设置错误。
在你提到的视频中的3点,他将太阳的注册点设置为左上角。 他还将地球的登记点设置在左上方,并将月球的登记点设置在左上方。
所以请确保它们是相同的。
查看您的代码......
var earthGravityX:Number = earth.x + (earth.width * .5) / 2;
var earthGravityY:Number = earth.y + (earth.height * .5) / 2;
请注意此处的操作顺序!
认为地球最左边是登记点,地球是100,100,大小是10x10 ......
var earthGravityX:Number = 100 + (10 * .5) / 2;//earth.x + (earth.width * .5) / 2;
var earthGravityY:Number = 100 + (10 * .5) / 2;//earth.y + (earth.height * .5) / 2;
变成......
var earthGravityX:Number = 100 + 5 / 2;//earth.x + (earth.width * .5) / 2;
var earthGravityY:Number = 100 + 5 / 2;//earth.y + (earth.height * .5) / 2;
var earthGravityX:Number = 100 + 2.5;//earth.x + (earth.width * .5) / 2;
var earthGravityY:Number = 100 + 2.5;//earth.y + (earth.height * .5) / 2;
等于102.5。那是偏离中心的。 但是,我无法为您找到正确的操作顺序。将地球的宽度减半并将其添加到X会让你成为中心...但除了2之外是什么?
如果删除该部门会怎样?