久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

2023信創(chuàng)獨(dú)角獸企業(yè)100強(qiáng)
全世界各行各業(yè)聯(lián)合起來(lái),internet一定要實(shí)現(xiàn)!

在flash中實(shí)現(xiàn)場(chǎng)景轉(zhuǎn)換中的馬賽克效果

2004-02-12 eNet&Ciweek

  PowrePoint里面很常用的效果,我說(shuō)不出名字,姑且叫"馬賽克漸變"效果吧. 就是圖片方格化退去,顯出另一幅圖畫(huà).另一幅圖畫(huà)過(guò)了一會(huì)兒又方格化退去,顯示下一張.如此循環(huán).大家可以看看我的源文件先.里面用了三幅圖.這個(gè)效果很實(shí)用,.您可以用在LOGO上或企業(yè)的產(chǎn)品宣傳上,簡(jiǎn)單美觀(guān).

  

  好了,閑話(huà)不說(shuō),介紹一下思路先.

  

  我們的思路是:場(chǎng)景里一共有四個(gè)MC.最下面一層用做相框,不會(huì)用到,我們?cè)O(shè)深度為0;中間兩層是真正要顯示的圖畫(huà),分別設(shè)深度為1,2,我們用"上層","下層"來(lái)代表. 頂層是遮罩,也是方塊效果的關(guān)鍵.我們?cè)O(shè)為3.

  

  既然遮罩層是關(guān)鍵,我們就先說(shuō)它.

  這個(gè)做為遮罩的MC是用AS建的一個(gè)空MC,名兒為mcMask,在mcMask里復(fù)制了10*10個(gè)并排無(wú)隙的小方塊,(當(dāng)然,在實(shí)際的代碼中可以看到,我把寬和長(zhǎng)分開(kāi)了的,所以實(shí)際上可以是長(zhǎng)方形,這里只是為了敘述方便).

  

  我們的目的是讓這些小方塊被隨機(jī)地清除,直到全部被清除掉,由于mcMask是上層圖畫(huà)的遮罩,故該圖也就"方塊化"地消失了,下層等長(zhǎng)寬(我們把圖設(shè)為等長(zhǎng)寬,這些方便一點(diǎn),也美觀(guān)一點(diǎn)兒)的圖畫(huà)也就"方塊化"地顯現(xiàn)了. 當(dāng)方塊全部清除后,我們把下層的圖畫(huà)提高到上層,再?gòu)?fù)制另一幅圖畫(huà)到下層,做一次循環(huán).這就達(dá)到一種周而復(fù)始的效果.

  

  下面我講講代碼的編寫(xiě)您就明白了.

  

  主場(chǎng)景中共有三幀代碼.第一幀是對(duì)一些對(duì)象和變量初始化:

  

  _global.k = 2;//決定圖畫(huà)的復(fù)制.

  _global.xpos = 135;//決定圖畫(huà)的橫坐標(biāo).

  _global.ypos = 135;//決定圖畫(huà)的橫坐標(biāo).

  attachMovie("mc"+3, "mc"+3, 2);//復(fù)制初始狀態(tài)下上層的圖畫(huà).(希望"上層"這個(gè)詞您不會(huì)產(chǎn)生歧義)

  with (eval("mc"+3)) {

   _x = xpos;

   _y = ypos;

  }

  attachMovie("border", "border", 0);//復(fù)制相框.放在底層.

  with (border) {

   _x = xpos;

   _y = ypos;

  }

  _root.createEmptyMovieClip("mcMask", 3);//生成遮罩層,下一幀我們將在里面復(fù)制小方塊.

  with (mcMask) {

   _x = xpos;

   _y = ypos;

  }

  eval("mc3").setMask(mcMask);//初始狀態(tài)下的設(shè)定遮罩,注意被遮罩的對(duì)象.

  _global.xW = (eval("mc"+3)._width)/10;//確定小方塊的長(zhǎng).

  _global.yH = (eval("mc"+3)._height)/10;//確定小方塊的高.上的面全局全量在下一幀都會(huì)有更詳細(xì)說(shuō)明.

  

  
  可以看到,我們聲明了一些全局變量和MC.如果您對(duì)它們的用途有疑問(wèn),不用擔(dān)心,呆會(huì)兒我們就會(huì)講到.

  第二幀代碼:

  

  attachMovie("mc"+k, "mc"+k, 1);//復(fù)制下層的MC.

  with (eval("mc"+k)) {

   _x = xpos;

   _y = ypos;

  }

  for (i=0; i<100; i++) {//在mcMask,也就是遮罩層里復(fù)制小方塊.

   mcMask.attachMovie("mcM", "mcM"+i, i);

   with (mcMask["mcM"+i]) {

   _width = xW;

   _height = yH;

   _x = (i%10-4.5)*xW;//如此決定的坐標(biāo)值,小方塊集合的幾何中心就是mcMask的中心點(diǎn).

   _y = (Math.floor(i/10)-4.5)*yH;

   }

  }

  _global.randomKdiffer = function(n, m, k) {//隨機(jī)函數(shù),目的是在n~m之間生成k個(gè)互異的數(shù),放到數(shù)組arrayK中.

  arrayK = [];

  var i = 0;

  while (i

    a = random(m-n+1)+n; for (var j = 0; j

    if (a == arrayK[j]) {

     break;

   }

   } if (j == i) {

   arrayK[i] = a;

   i++;

   } }

   return arrayK;

  };

  function maskT() {//主要的函數(shù).在第三幀里面會(huì)用setInterval調(diào)用.

  var a = [];

  a = randomKdiffer(0, 99, 10);//找到十個(gè)隨機(jī)數(shù),為的是下一步清除對(duì)應(yīng)的小方塊.

  for (var i = 0; i<10; i++) {//一次性清除十個(gè)隨機(jī)的方塊,

   mcMask["mcM"+a[i]].removeMovieClip();

  }

  for (j=0; j<100; j++) {//判斷小方塊是否全被清除.

   if (_root.mcMask["mcM"+j] != undefined) {

   break;

   }

  }

  if (j>=100) {//如果全被清除,則重新定義對(duì)象和變量值.

   clearInterval(_root.maskMc);//把清除時(shí)間間隔變量(在下一幀中).

   _root["mc"+k].swapDepths(2);//重新把下層的MC深度提到上層.

   k--;//控制MC復(fù)制的k值減少1,表示再一次復(fù)制的時(shí)候就復(fù)制后一個(gè)MC.

   if (k<1) {//如果k值小于1,就從3開(kāi)始重新循環(huán).并重新把下層的MC(已提高到上層)定義為被遮罩層.

   k = 3;

   eval("mc"+1).setMask(mcMask);

   } else {

   eval("mc"+(k+1)).setMask(mcMask);

   }

   _root.gotoAndPlay(2);//跳到第二幀重新執(zhí)行.

  }

  }

  這一幀主要是先定義下層的MC,因?yàn)樯弦粚拥腗C在前一次循環(huán)時(shí)已經(jīng)定義過(guò)了(初始化由第一幀代碼完成),并且在最后(當(dāng)小方塊全消失時(shí),原來(lái)的上層已經(jīng)不可見(jiàn),這時(shí)下層提升到上層,外觀(guān)上看不出來(lái))提升到上層且被定義為被遮罩.遮罩層的小方塊可以看到又重新生成了,所以我拉看到的仍是前一次循環(huán)的下層圖畫(huà).再經(jīng)歷一次循環(huán),利用k值的循環(huán)遞減,我們可以不斷地復(fù)制下層的圖畫(huà),達(dá)到周而復(fù)始的效果.只要理解了k的作用,其它的也就好懂了.注意第二幀我們復(fù)制的深度是1,代表下層.到了小方塊全部清除時(shí)才提升到2.第三幀就是讓時(shí)間頭停下,間隔0.2秒執(zhí)行maskT函數(shù).因?yàn)橐淮吻宄畟€(gè)MC(這里有重復(fù)也不用擔(dān)心).

  

  所以看起來(lái)就是方塊隨機(jī)消失,而消失完后,又返回第二幀開(kāi)始新的一輪.這一幀是循環(huán)的保障.其它的幾個(gè)全局變量是為了更好地控制圖片的位置和尺寸的. 我們可以更改圖片的尺寸而不需要改代碼. 不過(guò)有一點(diǎn)要注意,各圖片最好是一樣大小.不過(guò),就代碼的特點(diǎn)來(lái)看,我們也可以把圖片設(shè)為不同的尺寸,只要稍微改動(dòng)一下就行了.這里就留給大家自己思考了.如果要加入更多的圖片,只要把鏈接名稱(chēng)命名為"mc"+i(i=1,2,3...)就行了,相應(yīng)地修改k的循環(huán)判斷值.

  
源文件


  

相關(guān)頻道: eNews

您對(duì)本文或本站有任何意見(jiàn),請(qǐng)?jiān)谙路教峤?,謝謝!

投稿信箱:tougao@enet16.com