Flash 动作脚本3,转到并停止下一个3中的随机帧

Flash 动作脚本3,转到并停止下一个3中的随机帧,flash,actionscript,random,frame,Flash,Actionscript,Random,Frame,所以在我的flash中,我有一些部分,你可以选择哪条路,你选择的那条路应该是随机化的,我正在尝试构建它,这样当用户选择一条路时,他会被随机扔进3个标记帧中的一个,我甚至考虑过在最不可能发生的道路上添加一些随机部分 stop(); road1a.addEventListener(MouseEvent.CLICK, firstroadA); function firstroadA(e:MouseEvent):void{ if(this.currentFrame == 9){

所以在我的flash中,我有一些部分,你可以选择哪条路,你选择的那条路应该是随机化的,我正在尝试构建它,这样当用户选择一条路时,他会被随机扔进3个标记帧中的一个,我甚至考虑过在最不可能发生的道路上添加一些随机部分

    stop();

road1a.addEventListener(MouseEvent.CLICK, firstroadA);

function firstroadA(e:MouseEvent):void{
    if(this.currentFrame == 9){
        var randomNumber:Number = Math.floor(Math.random()*3)
        if (randomNumer == 0){
            gotoAndStop(10);
        }
        if (randomNumber == 1){
            gotoAndStop(11);
        }
        if (randomNumber == 2){
            gotoAndStop(12);
        }
    }
    else{
        nextFrame();
    }

}

在这个测试中,我尝试这样做,用户的选择发生在第9帧,当他选择单击firstroadA时,他会进入一些随机帧,10、11或12。。。所以,我希望我已经够清楚了简单地说,我的问题是,如何随机化gotoAndStop帧,以及如何添加一些很少有机会选择gotoAndStop的罕见帧。。。。谢谢大家!

您可以使用加权随机数进行任意操作。查看此代码,它可以按照您的需要执行:

stop();

gotoAndStop(9);

road1a.addEventListener(MouseEvent.CLICK, firstroadA);

function firstroadA(e:MouseEvent):void
{
    if(this.currentFrame == 9)
    {
        // These are the weight chance for each "road"
        // I used 30%, 50%, and 10% arbitrarily
        var choiceWeights:Array = [30, 50, 10];

        // frame choices
        var roadFrames = [10, 11, 12];

        // get a weighted random
        var r:int = makeChoiceWithWeight(choiceWeights);

        //go to the selected frame
        gotoAndStop(roadFrames[r]);
    }
    else
    {
        nextFrame();
    }
}

function makeChoiceWithWeight(choiceWeights:Array):int
{
    var sumOfWeights:int = 0;
    var numWeights:int = choiceWeights.length;

    // add all weights
    for(var i:Number = 0; i < numWeights; i++) sumOfWeights += choiceWeights[i];

    // pick a random number greater than zero and less than the total of weights
    var rnd:Number = Math.floor(Math.random()*sumOfWeights);

    //keep reducing the random number until less than a choices weight
    for(var ii:Number = 0; ii < numWeights; ii++)
    {
        if(rnd < choiceWeights[ii]) return ii;

        rnd -= choiceWeights[ii];
    }

    // should never reach this point
    return 0;
}
stop();
gotoAndStop(9);
road1a.addEventListener(MouseEvent.CLICK,firstroadA);
函数firstroadA(e:MouseEvent):无效
{
if(this.currentFrame==9)
{
//这是每条“道路”的重量概率
//我任意使用了30%、50%和10%
var-choiceWeights:Array=[30,50,10];
//框架选择
var道路框架=[10,11,12];
//得到一个加权随机数
var r:int=makeChoiceWithWeight(choiceWeights);
//转到选定的帧
gotoAndStop(路障[r]);
}
其他的
{
nextFrame();
}
}
函数makeChoiceWithWeight(choiceWeights:Array):int
{
var加权总和:int=0;
var numWeights:int=choiceWeights.length;
//添加所有权重
对于(变量i:Number=0;i
要深入了解加权随机数,请检查以下答案: