不重复的随机数运用实例
//实现的功能是:在舞台上生成50个按钮,让50个按钮的名字为1—50个数随机但不重复出现,单击按钮消失,但是必须是从1—50依次单击才行。(代码写在帧上了,大家别学习,尽量写在类中或flash Builder中)我在下面重要难懂的代码块都加了注释希望能给初学者带来帮助!
import fl.controls.Button;
import flash.events.MouseEvent;
var num:int = 49;
var cunfang:int;
var btn_txt:Array = [];//创建数组用于存放按钮上所有的文本值
var btnShiJian:Array = [];
var panDuan:int = 1;//默认值是一要求从一以此开始点击
for (var n:int=1; n<51; n++)//得到用于存放按钮上所有的文本的值;
{
btn_txt.push(n);
}
for (var i:int=0; i<10; i++)
{
for (var j:int=0; j<5; j++)
{
var btn:Button = new Button();
btnShiJian.push(btn);
btn.emphasized = true;//设置按钮的边框
btn.setSize(30,30);//设置btn的大小(宽高);
btn.x = i * 37 + 100;
btn.y = j * 37 + 100;
//下面的三行代码和btn_txt数组用于得到不重复的随机数
cunfang = Math.round(Math.random() * num);//设置一个随机的索引;
//trace(cunfang);
btn.label = String(btn_txt[cunfang]);
btn_txt.splice(cunfang, 1);//把用过的数组里的对象删除数组;;
if (num>0)//数组中的对象是不断减少的,用一个就从数组中删除一个;
{
num--;
}
stage.addChild(btn);
}
}
for (var a:int=0; a<50; a++)//给50个按钮都添加一个单击事件;
{
btnShiJian[a].addEventListener(MouseEvent.CLICK,onClickHandle);
}
function onClickHandle(e:MouseEvent):void
{
if (e.currentTarget.label == panDuan)//判断当前点击的对象是不是从变量panDuan开始,如果是则不可见;
{
e.currentTarget.visible = false;
panDuan++;//实现以此点击按钮才会消失,否则不消失
}
}
浙公网安备 33010602011771号