如何在我的代码中计算Math.PI / 180并存储在变量中计算的数字,以便游戏循环不会多次重新计算?我是动作脚本的新手,我在游戏循环和计算过程中遇到了困难,所以如果你能告诉我这样做的代码呢?
function moveEnemies():void
{
var tempEnemy:MovieClip;
for (var i:int =enemies.length-1; i>=0; i--)
{
tempEnemy = enemies[i];
if (tempEnemy.dead)
{
score++;
score++;
roachLevel.score_txt.text = String(score);
enemies.splice(i,1);
}
else
{
tempEnemy.rotation += (Math.round(Math.random()*.4));
tempEnemy.y += (Math.cos((Math.PI/180)*tempEnemy.rotation))*tempEnemy.speed;
if (tempEnemy.x < 10)
{
tempEnemy.x = 14;
}
if (tempEnemy.x > stage.stageWidth - offset)
{
tempEnemy.x = stage.stageWidth - offset;
}
if (tempEnemy.y > stage.stageHeight)
{
removeEnemy(i);
lives--;
roachLevel.lives_txt.text = String(lives);
}
}
}
}
答案 0 :(得分:1)
由于您不打算在运行时更改此值,因此最好的办法是将其设置为常量值:
public static const PI_OVER_180: number = Math.PI / 180;
如果你在函数内部计算这个值,那么每次调用函数时你都会重新计算它,浮动数学是很昂贵的。如果你知道你经常需要一个数字并且它不会改变,那就把它变成一个常数。
答案 1 :(得分:0)
在这里,我简单地将Math.PI / 180的计算存储到您要求的变量中,并在代码的其他部分重用它。
function moveEnemies():void
{
var tempEnemy:MovieClip;
var halfPI:Number = Math.PI / 180;
for (var i:int =enemies.length-1; i>=0; i--)
{
tempEnemy = enemies[i];
if (tempEnemy.dead)
{
score++;
score++;
roachLevel.score_txt.text = String(score);
enemies.splice(i,1);
}
else
{
tempEnemy.rotation += (Math.round(Math.random()*.4));
tempEnemy.y += (Math.cos(halfPI*tempEnemy.rotation))*tempEnemy.speed;
if (tempEnemy.x < 10)
{
tempEnemy.x = 14;
}
if (tempEnemy.x > stage.stageWidth - offset)
{
tempEnemy.x = stage.stageWidth - offset;
}
if (tempEnemy.y > stage.stageHeight)
{
removeEnemy(i);
lives--;
roachLevel.lives_txt.text = String(lives);
}
}
}
}