2014-04-04 2 views
0

그래서 임의의 숫자를 생성하고 몇 번 사용해야하는데 문제는 EnterFrame 함수에서 생성된다는 것입니다. 캐릭터가 점프와 stage.addEventListener (되어 Event.ENTER_FRAME, 점프)하지 않을 경우 여기어떻게 난수를 생성하고 몇 번 사용합니까?

function pn():Number { 
    var pn:Number = Math.round(Math.random()*5); 
    return pn; 
} 

내가 확인;

이 기능은 숫자 0-5를 생성

function jump(e) { 
     if (i < 50) { 
      i++; 
      item[1][pn()].y -=1  
     } else { 
      item[1][pn()].y += 1; 
      if (item[1][pn()].y == 0){ 
       stage.removeEventListener(Event.ENTER_FRAME, jump) 
      } 
} 

문제가 확인되는 경우마다 점프 기능에 그것은 새 번호를 생성하는 것입니다 : 여기

if(!mainJumping){ 
     mainJumping = true; 
     stage.addEventListener(Event.ENTER_FRAME, jump) 
    } 

그리고

내가 무작위로 생성 된 번호를 사용할 필요가 점프 기능입니다. 이 번호가 생성 될 때까지이 번호가 변경되지 않도록해야합니다.

if (item[1][pn()].y == 0){ 
    stage.removeEventListener(Event.ENTER_FRAME, jump) 
} 

다음은 새 번호를 생성 할 수 있습니다. 아이디어 있니? 고맙습니다.

답변

0

myRandomNumber라는 인스턴스 변수를 만듭니다. 그것의 getter에서 null 인 경우 pn()을 호출하여 채 웁니다. 이 같은

뭔가 :

private var _myRandomNumber:int = 0; 

그리고 당신의 게터의 :

클래스에서이 변수 정의 이제

public function get myRandomNumber():int { 
    if (_myRandomNumber == 0) { 
     _myRandomNumber = pn(); 
    } 

    return _myRandomNumber; 
} 

을, 당신은 myRandomNumber를 호출 할 때, 당신은 얻을 것이다 "난수":

+0

답변 해 주셔서 감사합니다.하지만 어떻게해야하는지 오해했습니다. 예를 들어 주시겠습니까? 다시 감사합니다! –

+0

내 대답이 업데이트되었습니다. 내 의견을 알려주십시오. – Geremy

+0

난수 생성 방법을 오해 했나요? 항상 0을 리턴할까요? –

0
// Create a variable higher up the scope chain to store the number 
var random = 0; 

// Assuming this is in a function at the same level as the jump function 
//function() ???? { 
    if(!mainJumping){ 
     mainJumping = true; 
     random = pn(); // Generate new random number when jump begins 
     stage.addEventListener(Event.ENTER_FRAME, jump) 
    } 
//} 

function jump(e) { 
    var item = item[1][random]; // Grab the random item 
    if (i < 50) { 
     i++; 
     item.y -=1  
    } else { 
     item.y += 1; 
     if (item.y == 0){ 
      stage.removeEventListener(Event.ENTER_FRAME, jump) 
     } 
    } 
} 
관련 문제