不重复的随机数运用实例

//实现的功能是:在舞台上生成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++;//实现以此点击按钮才会消失,否则不消失
 }
}

posted on 2012-10-14 20:03  笔墨丹青  阅读(235)  评论(0)    收藏  举报

导航