如何生成随机数并使用它几次?

时间:2014-04-04 19:31:12

标签: actionscript-3 flash random actionscript

所以我需要生成随机数并使用它几次,问题是它在EnterFrame函数上生成。

此函数生成数字0-5:

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

这里我检查字符是否没有跳跃和stage.addEventListener(Event.ENTER_FRAME,jump);

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

这里是跳转功能,我需要使用随机生成的数字:

    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时跳转功能都会产生新的数字。我需要让这个数字生成,直到这一部分才会改变:

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

此后它可以生成新号码。有你的想法吗?谢谢。

2 个答案:

答案 0 :(得分:0)

创建一个名为myRandomNumber的实例变量。在它的getter中,如果它为null,则调用pn()来填充它。

这样的事情:

在课堂上,定义变量:

private var _myRandomNumber:int = 0;

在你的吸气中:

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

    return _myRandomNumber;
}

现在,当你调用myRandomNumber时,你会得到一个“随机数”:)

答案 1 :(得分: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)
        }
    }
}