Flash 动作脚本3,转到并停止下一个3中的随机帧
所以在我的flash中,我有一些部分,你可以选择哪条路,你选择的那条路应该是随机化的,我正在尝试构建它,这样当用户选择一条路时,他会被随机扔进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){
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
要深入了解加权随机数,请检查以下答案: