2015-02-11 243 views
0

即时通讯工作在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分的游戏带你回到主屏幕)这是在屏幕上,而不是陷入仍然球精灵保留在屏幕上,

回答

1

您需要为每个球分配不同的ymov速度。现在,您可以将该值分配给顶级范围,然后使用它更新每个球的位置。这就是为什么他们都是一样的速度。

您可以在addBall()功能分配一个新的随机ymov属性,每个球:

bgame[i].ymov = 7 + Math.random() * 7; 

然后在你的Ballgame()更新功能移动基于该属性球:

bgame[j].y += bgame[j].ymov; 

BTW作为一个样式注释,类通常是UpperCase而变量和函数是lowerCase

+0

谢谢你的工作原理:D,有没有办法让速度不会慢于7帧? – Ajay 2015-02-11 19:48:58

+0

我仍然希望它是随机的,但不低于7 @Aaron – Ajay 2015-02-11 19:49:53

+0

当然,我编辑我的答案使用'7 + Math.random()* 7' - 这应该给7到14的值。 – Aaron 2015-02-11 19:56:40

0

你的问题是,你只是“掷骰子”一次,并使用该结果的每个球的速度。使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

相关问题