我尝试生成一个随机数,如果它符合if
条件,则会播放声音。这曾经起作用,但由于某种原因,它只生成相同的数字。请帮忙!
var myNum:Number = Math.floor(Math.random() * 2000);
stage.addEventListener(Event.ENTER_FRAME, creakers);
function creakers(e:Event):void
{
trace(myNum);
if (myNum<10)
{
creakSound.play();}}
答案 0 :(得分:3)
您正在事件侦听器之外生成随机数。所以你永远不会改变myNum
。您需要在creakers
方法中移动它。
function creakers(e:Event):void
{
var myNum:Number = Math.floor(Math.random() * 2000);
trace(myNum);
}
答案 1 :(得分:0)
问题是myNum是另一个函数(构造函数)中的局部变量,并且你试图在另一个函数creakers中访问相同的变量。在一个函数中定义的局部函数将仅限于该函数。所以为了使事情正确你应该在creakers函数中定义myNum变量。
还有另外一种方法....在类中将此变量定义为公共变量或私有变量。这样它就可以用在类
中的多个函数中class xx{
public var mynum:Number
function xx(){
mynum = Math.random * 20000;
}
function creaker{
trace(mynum);
}
}
答案 2 :(得分:0)
如果要计算每个输入帧的myNum,则必须在事件为Event.ENTER_FRAME
的creakers函数中进行此计算。
var myNum:uint;
function creakers(e:Event):void
{
myNum = Math.floor(Math.random() * 2000);
}
stage.addEventListener(Event.ENTER_FRAME, creakers);
<强>说明
Math.floor(Math.random()* 2000)是一个integer
,所以myNum的类型不是{\ n}
Number
但uint
。
myNum应该在函数creakers之外声明
因为它对每个enterframe的declare
变量没用。您
只需要将它归结为一个新值。