as3 Math.random()似乎无法正常工作
问题描述:
即时通讯工作在as3 adobe flash,FLA是一款吸引人的游戏,似乎工作正常,但我想调整它。我目前有:as3 Math.random()似乎无法正常工作
试图实现每球随机速度,我想这:
var speed:Number = 7;
var RandomSpeed:Number = Math.random() * 7;
var ymov:Number = RandomSpeed + speed;
,并在功能,我把这个:
bgame[j].y += ymov;
(其[J]因为我有使另一个阵列让球落下)
其目前随机所有的球在游戏中以相同的速度,但我希望它做到个别球。
这里还有一个多的问题,当游戏结束(一旦球员得到2分的游戏带你回到主屏幕)这是在屏幕上,而不是陷入仍然球精灵保留在屏幕上,
答
您需要为每个球分配不同的ymov
速度。现在,您可以将该值分配给*范围,然后使用它更新每个球的位置。这就是为什么他们都是一样的速度。
您可以在addBall()
功能分配一个新的随机ymov
属性,每个球:
bgame[i].ymov = 7 + Math.random() * 7;
然后在你的Ballgame()
更新功能移动基于该属性球:
bgame[j].y += bgame[j].ymov;
BTW作为一个样式注释,类通常是UpperCase
而变量和函数是lowerCase
。
答
你的问题是,你只是“掷骰子”一次,并使用该结果的每个球的速度。使ymov
成为一个函数,每次都会产生不同的结果。 IE:
function ymov():Number
{
var speed:Number = 7;
var RandomSpeed:Number = Math.random() * 7;
return RandomSpeed + speed;
}
+0
感谢您的快速回复,但似乎并没有这样做,还有另一种方法可以做到吗? – Ajay 2015-02-11 17:13:46
谢谢你的工作原理:D,有没有办法让速度不会慢于7帧? – Ajay 2015-02-11 19:48:58
我仍然希望它是随机的,但不低于7 @Aaron – Ajay 2015-02-11 19:49:53
当然,我编辑我的答案使用'7 + Math.random()* 7' - 这应该给7到14的值。 – Aaron 2015-02-11 19:56:40