2014-11-24 108 views
0

我試圖得到一個隨機數生成,如果它符合if條件,將播放聲音。這用於工作,但由於某種原因,它只生成相同的數字。請幫忙!AS3 Math.random生成相同的數字

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();}} 

回答

3

您正在生成事件偵聽器外部的隨機數。所以你永遠不會改變myNum。您需要將其移至creakers方法中。

function creakers(e:Event):void 
{ 
    var myNum:Number = Math.floor(Math.random() * 2000); 
    trace(myNum); 
} 
0

問題則存在myNum的是另一個函數(構造器)內的局部變量和UR試圖訪問在一個函數定義的另一個功能creakers..a本地功能相同的變量將被限制在該只有函數...所以爲了使事情正確,你應該在creaker函數中定義myNum變量。

還有一個其他方法....在類中定義這個變量作爲公共或私有變量。因此,它可以在多個功能,如果你想計算的myNum每個enterFrame事件中使用的類

class xx{ 
public var mynum:Number 
function xx(){ 
    mynum = Math.random * 20000; 
} 
function creaker{ 
    trace(mynum); 
} 
} 
0

裏面,你必須使這個計算在你的creakers功能,其事件是Event.ENTER_FRAME

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的類型不 Numberuint

  • myNum應該在函數標識符 之外聲明,因爲它對每個輸入框中的這個變量都沒有用處。你只需要給它一個新的值就可以了。