我獲取了屏幕的寬和高,動(dòng)態(tài)創(chuàng)建了兩個(gè)movieClip.一個(gè)是sourceMc.另一個(gè)是destMc.然后在創(chuàng)建bitmapData的實(shí)例。 下一步,我加入了一些代碼在onEnerFrame方法中: 代碼:
destMC.onEnterFrame = function() { drawStar(); capture(); drawToScreen(); }
We draw a star on the stage, take a screenshot, and finally transfer that screenshot to a MovieClip. 我們?cè)趫?chǎng)景中繪制星,然后將它傳遞給一個(gè)MovieClip. 下面是”draw“的代碼:
代碼:
function drawStar() { //attach star at depth 1 var star = sourceMC.attachMovie("star", "star", 1); glow.color = Math.floor(Math.random()*0xFFFFFF); star.filters = [glow,bevel]; star._x = getRandomInt(w, (star._width/2)); star._y = getRandomInt(h, (star._height/2)); }
drawStar:(繪制星星)
我們實(shí)際上粘貼的是一個(gè)放在庫中之前準(zhǔn)備好的圖像,注意,我們?cè)谡迟N時(shí)用了一個(gè)固定的深度以便當(dāng)有新的星星重復(fù)時(shí)可以被替換掉。源和目標(biāo)剪輯的命名方是很有用的。你將在capture()函數(shù)中看到為什么。
第二行改變了glow濾鏡的色彩,你可以在“filter“層的代碼上看到,這里面我們所用的Math.random()來創(chuàng)建隨機(jī)的黑到白之間的色彩。 第三行,我們指定濾鏡給MC. 最后使用了我自定義的函數(shù)getRandomInt(),我們?cè)O(shè)置x和y的位置是一個(gè)隨機(jī)的整數(shù),并且在屏幕邊框之內(nèi)。 capture:(緩沖)
下面這個(gè)函數(shù)將是很簡(jiǎn)單的。
代碼:
function capture() { destMC._visible = false; screenShot.draw(sourceMC); destMC._visible = true; }
這里面我們先讓我們的目標(biāo)mc不可見,為什么?因?yàn)槲覀冊(cè)谘h(huán)過程中目標(biāo)MC中將會(huì)包含一個(gè)我們之前的原始星星,我們只是需要用其它的星星,另外我也更想做到的是觀看bitmapData的工作過程。
draw方法(用在下一個(gè)函數(shù)中)不會(huì)清除掉bitmapData.而是將新數(shù)據(jù)和老的數(shù)據(jù)混合,因?yàn)槲覀儾幌肟吹较仁且黄,然后空了,再來一屏的那種效果。需要注意的是在使用glow的時(shí)候星星會(huì)是正常的。有時(shí)有可能會(huì)出glow 周圍不正常的現(xiàn)象。 如下是你希望的效果:
下面這個(gè)可能不是你想看到的效果:
好,在結(jié)束我們的capture() 函數(shù)時(shí),我們讓destMc顯示出來就可以。
drawToScreen:(繪至屏幕上)
DrawToScreen函數(shù)的功能就象的它的標(biāo)題一樣。目的是要將它繪制在屏幕上。如下代碼:
代碼:
function drawToScreen() { destMc.attachBitmap(screenshot,1); }
最后,你可以測(cè)試你的影片了。
小結(jié):在這個(gè)教程中每次運(yùn)行時(shí)我都隱藏目標(biāo)MC,除了這之外,你還可以對(duì)它進(jìn)行其它的操作,例好,更換Alpha,xscale.yscale等等屬性,你還可以加入其它的濾鏡效果,如blur,如果你隨意拖動(dòng)一個(gè)矢量圖形對(duì)象,你可以使用cacheAsBitmap以使處它變得更容易。
如果你想清除BMD中的內(nèi)容,你需要使用fillRect(rectangle,color);為了做到這一點(diǎn),你需要使用geom 類來創(chuàng)建一個(gè)矩形,請(qǐng)參看之前的教程flash8 maelstrom 基礎(chǔ) 大致如下:
代碼:
var rect = new flash.geom.Rectangle(0, 0, width, height); bmap.fillRect(rect, color);
希望通過些教程讓你充分理解bitmapData class的用法。完。Enjoy!
出處:WebStudio
責(zé)任編輯:moby
上一頁 flash 8 BitmapData 類的應(yīng)用 [2] 下一頁
◎進(jìn)入論壇Flash專欄版塊參加討論
|