【发布时间】:2021-03-22 09:42:21
【问题描述】:
对于我参与的组织的年度圣诞节活动,我们通常会举行抽奖活动,人们只需参加并在门口获得号码票,就有机会赢取免费奖品。我们使用 Flash 编写的程序(使用 ActionScript 2.0),利用 math.random 选择一个随机数,并附加一些参数,如下所示:
//maxNr = 999999999999999;
initRandom = function(){
var nr = Math.ceil(Math.ceil(Math.random()*(maxNr));
var nrString = "";
for( var j=0; j<(maxNr.toString().length-nr.toString().length); j++){
nrString += "0";
}
nrString += nr.toString();
var holder = this.createEmptyMovieClip("holder",1);
for( i=0; i<maxNr.toString().length; i++ ){
var mc = holder.attachMovie("number","n"+i,i+10);
mc._x = i*350;
mc.anim_mc.gotoAndPlay( Math.floor(Math.random()*9) + 1 );
this["iv"+i] = setInterval( this, "revealNumber", 2000 + (500*i), nrString.substr(i,1), i );
}
// scale (if needed) and center
if( holder._width > Stage.width ){
holder._width = Stage.width;
holder._yscale = holder._xscale;
}
holder._x = Stage.width/2 - holder._width/2;
holder._y = 100;
// buttons
back_btn.onRelease = function(){
for(item in holder){
holder[item].removeMovieClip();
}
gotoAndStop("intro");
}
}
revealNumber = function( digit, i ){
clearInterval( this["iv"+i] );
holder["n"+i].gotoAndStop("done");
holder["n"+i]["number_txt"].text = digit;
}
initRandom();
stop();
返回一个介于 1 到 1000 之间的随机数,定义如下:
go_btn.onRelease = function(){
maxNr = Math.max( 1000 , 1 );
gotoAndStop("random");
}
stop();
它是由我们组织的一位成员编写的,他不幸在这一年去世了,我几乎没有编程知识,但我学得很快,实际上已经修改了一些代码以达到目前的水平.但是,我正在尝试添加一个参数,该参数将禁止该函数重复一个数字,即不包括重新选择已生成的数字。 我已经花了几天时间搜索所有可能的资源,但都遇到了死胡同。
使用目前采用的方法,是否可以将此参数添加到现有代码中,我该如何做?
非常感谢任何帮助、建议或回复!
【问题讨论】:
-
简单地说,您需要 var nr = Math.ceil(Math.ceil(Math.random()*(maxNr)); 才能产生独特的结果?
-
是的,我相信这应该是简单的表达方式;我希望只有独特的结果,这样它就不会给我以前生成的数字
标签: arrays flash random actionscript actionscript-2