我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 图型图像 > FLASH > 产生不重复的随机数的方法(有一个遮照实例)
热门文章排行
热门文章排行 Photoshop制作精美的简历封面(10-12)
在Flash课件中正确调用SWF文件(11-25)
巧用Photoshop徒手绘制扇子(10-19)
CorelDRAW12循序渐进-制作文本效果(12-29)
消除文字勾边后产生毛刺的小技巧(06-14)
精采文章排行
精采文章排行 GIF动态图片的修改(11-07)
Q版人物绘制全过程(11-07)
Flash互动电子地图制作手册——入门(11-01)
Flash 8.0前瞻——揭开8 ball的薄面(10-24)
土人AS入门教程对象篇(10-24)
技术专题推荐
网管论坛交流
 

产生不重复的随机数的方法(有一个遮照实例) 

作者:佚名   来源:Linux 宝库   点击:   日期:2006-11-25


-->

把0到99的数排列,不重复.
  适用于在做多个随机方块遮照图片时和在播放动画时随机播放音乐,但不重复.等
  方法一: 



oldtime=getTimer();
my_array=new Array();
n=100;
for(var i=0;i  my_array[i]=i;
}
for(var i=0;i var tmp1=random(n);
 var tmp2=my_array[i];
 my_array[i]=my_array[tmp1];
 my_array[tmp1]=tmp2;
}
trace(my_array); 
trace(getTimer()-oldtime);//程序运行时间
//----------------------------------------------------------

--------------方法二-------------------------------------


n=getTimer();
Array.prototype.randomize = function() {
this.sort(function(a, b) { return random(2)>0 ? 1 : -1;});
}
var myArray = new Array();
for(var i=0;i<1000;i++){
myArray[i]=i; 
}
myArray.randomize();
trace(myArray); 
trace(getTimer()-n);

  方法三:


var num_arr:Array = new Array(); 
var j = 0; 
var judge = 0; 
do { 
 var temp_num = Math.round(Math.random()*100); 
 for (var i = 0; i  var temp_n = num_arr[i]; 
  if (temp_num == temp_n) { 
  judge = 1; 
  break; 
  } else { 
  judge = 0; 
  } 
 } 
 if (judge == 0) { 
  num_arr.push(temp_num); 
  j++; 
  _root["t"+j].text = temp_num; 
 } 
} while (j<100); 
trace(num_arr);


 




        制作过程: 建两层,各放一图片,其中上层的图片定义实例名:pic_mc
  然后画一矩形,转化为MC,定义ID名为 box,然后在帧上写入AS:


creatmask();
//建立遮照
newnum();
//产生随机数
var i = -1;
var n = 0;
_root.onEnterFrame = function() {
i++;
if (i<300) {
 eval("_root.m1_mc.box"+my_array[n]).removeMovieClip();
 //移除方块
 n++;
}
if (i>=400 && i<700) {
 m = my_array[i-400];
 _root.m1_mc.attachMovie("box", "box"+m, m+10, {_x:int(m/15)*20, _y:m%15*20});
 //加载方块
}
if (i>800) {
 i = 0;
 n = 0;
}
};
//-------------------------------------
function creatMask() {
_root.createEmptyMovieClip("m1_mc", 1);
m1_mc._x = 0;
mc_mc._y = 0;
for (var i = 0; i<300; i++) {
 _root.m1_mc.attachMovie("box", "box"+i, i+10, {_x:int(i/15)*20, _y:i%15*20});
}
pic_mc.setMask(m1_mc);
}
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i my_array[i] = i;
}
for (var i = 0; i var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}

  在上面的基础上有所改进


制作方法与上有点差别,就是在box元件中的方块转化为MC,然后编辑这个MC,在上面做点运动变形.
newnum();
//产生随机数
_root.createEmptyMovieClip("m1_mc", 1);
m1_mc._x = 0;
mc_mc._y = 0;
pic_mc.setMask(m1_mc);
for (var i = 0; i<300; i++) {
_root.m1_mc.attachMovie("box", "box"+i, i+100, {_x:int(i/15)*20, _y:i%15*20});
}
var i = -1;
_root.onEnterFrame = function() {
i++;
if (i<300) {
 m = my_array[i];
 eval("_root.m1_mc.box"+my_array[m]+".p").play();
}
if (i>=400 && i<700) {
 m = my_array[i-400];
 eval("_root.m1_mc.box"+my_array[m]+".p").play();
}
if (i>800) {
 i = -1;
}
};
//-------------------------------------
function newnum() {
my_array = new Array();
n = 300;
for (var i = 0; i my_array[i] = i;
}
for (var i = 0; i var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}







文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·消除文字勾边后产生毛刺的小技巧 · 解决COREDRAW9与双核CPU冲突的技巧 5
·CorelDRAW入门与进阶实例:8.2椭圆按钮制 ·CorelDRAW印前分色新手上路
·IllustratorCS制作刺绣效果 ·CorelDRAW使用技巧-如何在CorelDRAW中虚

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。