快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

  把0到99的数排列,不重复.
  适用于在做多个随机方块遮照图片时和在播放动画时随机播放音乐,但不重复.等
  方式一: 
oldtime=getTimer();
my_array=new Array();
n=100;
for(var i=0;i<n;i++){
  my_array[i]=i;
}
for(var i=0;i<n;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<num_arr.length; 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);

« Full Screen »

点击点击这里下载源文件

  制作过程: 建两层,各放一图片,其中上层的图片定义实例名: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<n; i++) {
 my_array[i] = i;
}
for (var i = 0; i<n; i++) {
 var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}
  在上面的基础上有所改进

« Full Screen »

点击点击这里下载源文件



  制作方式与上有点差别,就是在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<n; i++) {
 my_array[i] = i;
}
for (var i = 0; i<n; i++) {
 var tmp1 = random(n);
 var tmp2 = my_array[i];
 my_array[i] = my_array[tmp1];
 my_array[tmp1] = tmp2;
}
}



返回类别: Flash教程
上一教程: 制作可拖动的菜单
下一教程: Flash 的发展及中国闪客的思索

您可以阅读与"产生不重复的随机数的方式(有一个遮照实例)"相关的教程:
· FLASH ActionScript学习:判定奇偶数的方式
· Flash中利用遮照实现图片过渡
· 一个简朴的用ActionScript删除Flash Paper商标的方式
· Flash中Loading制作实例之记速器样式
· Flash实例视频教程:动态手机屏幕背景图制作(1)
    微笑服务 优质保证 索取样品