发新话题
打印

[求救] AS 2.0里怎么实现"延时"功能呢?

AS 2.0里怎么实现"延时"功能呢?

http://space.flash8.net/bbs/thread-353022-1-2.html

由上面那个帖子引发的问题。。。我想做一个类似百叶窗式的mask效果 现在是生成了一个numx * numy 的方块矩阵 然后让他们按一定顺序play 以实现特殊效果的“百叶窗” 但是现在遇到的问题是 几个每个方块都是“同时”出现的 眼睛几乎分辨不出前后来 效果大打折扣

源文件在上面那个帖子里。。。
引用:

var lx,ly,rx,ry,w,h,max :Number // lx = leftX .....
var tempclip:MovieClip;
//test shu jv
lx = 200;
rx = 600;
ly = 200;
ry = 300;
// ding yi mc de gao he kuan
w = 20; // zuo you
h = 20; // shang xia
// gong duo shao ge fang ge
numx = Math.ceil( (rx - lx) /w );
numy = Math.ceil( (ry - ly) /h );
depth = 50;
if (numx>=numy) { max = numx;} else {max = numy;}
// chuang jian kong mc
this.createEmptyMovieClip('maskme',0);
// sheng cheng jv zhen
/*
for (var i = 1; i<=numx ; i++) {
for (var j = 1; j<=numy ; j++) {
  tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
  tempclip._x = lx + w /2 +  (i-1) * w;
  tempclip._y = ly + h /2 +  (j-1) * h;
   
}
}
*/
for (var k = 2; k <= (max * 2); k++ ) {
i = 1;
do {
  j = k - i;
  if (( i<=numx ) and ( j<=numy )) {
   tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
   tempclip._x = lx + w /2 +  (i-1) * w;
   tempclip._y = ly + h /2 +  (j-1) * h;
  }
  i++;
}
while (i < k )
}
this.setMask(maskme);
for (var k = 2; k <= (max * 2); k++ ) {
for (var pppp=1; pppp <100000; pppp++){}
i = 1;
do {
  j = k - i;
  if (( i<=numx ) and ( j<=numy )) {
   tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
   tempclip._x = lx + w /2 +  (i-1) * w;
   tempclip._y = ly + h /2 +  (j-1) * h;
  }
  i++;
}
while (i < k )
}
为了实现“逐渐”“分层”播放各个mc的效果 我加了这句for 但是效果很差 测试的时候很拖累速度 但是基本没改善 还是几乎一块都播放了
as 3.0加了个 timer 类 好像能实现这种效果了 但是as 2.0怎么做呢?

TOP

setTimeout

TOP

引用:
原帖由 终极讨厌 于 2008-4-15 17:13 发表
setTimeout
改成这样 还是不行
一运行 什么显示都没有了
引用:

var lx,ly,rx,ry,w,h,max :Number // lx = leftX .....
var tempclip:MovieClip;
//test shu jv
lx = 200;
rx = 600;
ly = 200;
ry = 300;

// ding yi mc de gao he kuan
w = 20; // zuo you
h = 20; // shang xia
// gong duo shao ge fang ge
numx = Math.ceil( (rx - lx) /w );
numy = Math.ceil( (ry - ly) /h );
depth = 50;
if (numx>=numy) { max = numx;} else {max = numy;}
// chuang jian kong mc
this.createEmptyMovieClip('maskme',0);
// sheng cheng jv zhen
/*
for (var i = 1; i<=numx ; i++) {
for (var j = 1; j<=numy ; j++) {
  tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
  tempclip._x = lx + w /2 +  (i-1) * w;
  tempclip._y = ly + h /2 +  (j-1) * h;
   
}
}



for (var k = 2; k <= (max * 2); k++ ) {
i = 1;
do {
  j = k - i;
  if (( i<=numx ) and ( j<=numy )) {
   tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
   tempclip._x = lx + w /2 +  (i-1) * w;
   tempclip._y = ly + h /2 +  (j-1) * h;
  }
  i++;
}
while (i < k )
}
*/
_global.kk = 2;
function tttt() {
i = 1;
do {
  j = _global.kk - i;
  if (( i<=numx ) and ( j<=numy )) {
   tempclip = maskme.attachMovie("blank", "blank" + i + j , ++depth);
   tempclip._x = lx + w /2 +  (i-1) * w;
   tempclip._y = ly + h /2 +  (j-1) * h;
  }
  i++;
}
while (i < _global.kk )

}
for (_global.kk =2 ; _global.kk <= (max * 2); _global.kk ++ ) {
setTimeout(tttt,10);

}
this.setMask(maskme);

TOP

TOP

寻 as2高手  联系QQ  847848533

TOP

如果不怕麻烦的话,可以写一个倒计时的函数, 时间设置为你所期望的间隔, 计时结束在执行下一步.

我也是刚学as2, 只会用这么麻烦的方法.

TOP

setInterval()设置延时
clearInterval()

TOP

发新话题