BitmapData類是什么
Flash.display.bitmapData允許我們使用像素層級(jí)來(lái)控制位圖,這意味著什么呢,好,在下面的簡(jiǎn)介中我們將簡(jiǎn)介它能做什么。 ·復(fù)制和粘貼整個(gè)圖像,部分圖案;蛘呤敲恳粋(gè)獨(dú)立的像素。 ·鑒別或是改變像素或是像素群組的顏色。 ·應(yīng)用新的FLASH濾鏡。 ·創(chuàng)建隨機(jī)的像素(noise或perlin noise)等等。 它還可以將bitmapDate應(yīng)用到視頻上。
創(chuàng)建bitmapData 類的實(shí)例
我們用如下的方法創(chuàng)建bitmapData實(shí)例 bmap=new flash.display.BitmapData(100,100,false,0); BitmapData類提供了四個(gè)參數(shù) width(number數(shù)值,像素寬) Height(number數(shù)值,像素高) Alpah值(boolean布爾值) Default background color fill(默認(rèn)添充的背景色)(number數(shù)值) 因此從上面代碼,我們可以看出我創(chuàng)建了一個(gè)100*100方形,不允許alpha透明,指定0為背景色,也就是黑色。 注意:到目前為,我不能確定是否alpha值只與BMD的背景alpha相關(guān)連,或是它是否只是允許圖像中的像素透明。
Copy & Paste 復(fù)制和粘貼
也許最好的例子就是從最基礎(chǔ)的復(fù)制和粘貼操作開(kāi)始。想象一下通過(guò)BMD從圖像上來(lái)復(fù)制和粘貼像素。例如,在flashmx2004或是更早的版本中,載入圖像到movieclip中然后在movieclip中復(fù)制來(lái)查看所復(fù)制的圖像是不可能的。因?yàn)槿魏屋d入的圖像都必須重新加載,如果你想看更多的復(fù)制內(nèi)容。 我們當(dāng)然也可以在創(chuàng)作時(shí)手動(dòng)的導(dǎo)入圖片,也許這是最簡(jiǎn)單方法,我們將在第一例子中使用這種方。
下載第一個(gè)范例文件sample fla(bmap.zip),在你繼續(xù)進(jìn)行之前,先快速的看一下這個(gè)文件。 這里面有三個(gè)對(duì)象是關(guān)于”復(fù)制和粘貼”的. 1.源圖像(source) 2.創(chuàng)建的BitmapData實(shí)例(bmap) 3.目標(biāo)MovieClip(dest2) 對(duì)于目標(biāo)MovieClip的創(chuàng)建我們可以選擇兩種方式 1.手動(dòng)創(chuàng)建一個(gè)MovieClip,本例中設(shè)置的長(zhǎng)寬分別為100. 2.以使用CreateEmptyMovieClip();來(lái)創(chuàng)建。 在我們的第一個(gè)例子中,我們使用的方法是第一種,在創(chuàng)作時(shí)創(chuàng)建一個(gè)movieClip.
Example 1: 范例1
我們已經(jīng)放置了兩個(gè)MovieClip在主場(chǎng)景中。 第一個(gè)MovieClip中包含一個(gè)圖片,大小是100*100像素,實(shí)例名稱為source.第二個(gè)MovieClip包含一個(gè)橙色的圖形,大小也是100*100像素,這個(gè)MC的實(shí)例名為dest2. 為了復(fù)制整張圖像,我們可以如下來(lái)做:
代碼:
bmp=new flash.display.BitmapData(100,100,false,0); bmap.draw(source); dest2.attachBitmap(bmp,1);
第一行我們創(chuàng)建了BMD的實(shí)際,名為bmp并且它的大小與我們圖像的大小是一致的。第二行,在BMD上復(fù)制圖像,你可以用下例語(yǔ)法將一個(gè)movieClip放在BMD中。 SomeBMDinstance.draw(someMovieClip); 最后我們想看到在BMD上的復(fù)制結(jié)果,當(dāng)前你并不能看到結(jié)果直到你將它貼加到一個(gè)MovieClip上為止。如下語(yǔ)法:
代碼:
destinationMC.attachBitmap(someBMDinstance,depth);
注意:attachBitmap實(shí)際上有4個(gè)參數(shù),全部參數(shù)如下: attachBitmap(bmp:BitmapData, depth:Number, pixelSnapping:String, smoothing:Boolean) 前兩個(gè)參數(shù)一個(gè)是bitmapdata類的引用名,一個(gè)是深度。 第三個(gè)參數(shù)pixelSnapping(像素對(duì)齊)有三種選擇, Auto:當(dāng)位圖沒(méi)有進(jìn)行變形或是旋轉(zhuǎn)來(lái)進(jìn)行像素對(duì)齊。 Always:不管位圖是否進(jìn)行過(guò)變形或是旋轉(zhuǎn)都要進(jìn)行像素對(duì)齊。 Never:從不進(jìn)行像素對(duì)齊。 默認(rèn)下為auto. 第四個(gè)參數(shù):smoothing(光滑):它是布爾值,用來(lái)決定是否對(duì)縮放過(guò)的圖像進(jìn)行光滑。
在本例中我們只需要用到前兩個(gè)參數(shù)。在你測(cè)試運(yùn)行的時(shí)候,你就會(huì)發(fā)現(xiàn)源圖像已經(jīng)被復(fù)制到目標(biāo)MC中了。
那么,現(xiàn)在我們回到開(kāi)始我們說(shuō)過(guò)的使用創(chuàng)作時(shí)手動(dòng)創(chuàng)建或是使用createEmptyMovieClip()創(chuàng)建的MovieClip。當(dāng)我們將BMD的實(shí)例粘貼到我們創(chuàng)建的MC中時(shí),我們會(huì)想到一些問(wèn)題,比如,如果BMD實(shí)例大于source影片剪輯,或是目標(biāo)MC(dest2)小于BMD實(shí)例等等會(huì)發(fā)生什么呢。
下面我們將用幾張圖片的形式來(lái)說(shuō)明問(wèn)題: 需要注意的是,圖片下面說(shuō)明文字中的source源和dest2目標(biāo)MC不是指的是影片剪輯本身而指是影片剪輯內(nèi)的內(nèi)容,如果要指定影片剪輯會(huì)加說(shuō)明。
souce源里面的內(nèi)容:100*100px(影片剪輯本身未縮放); dest2目標(biāo)剪輯的內(nèi)容:100*100px(影片剪輯本身未縮放) BMD實(shí)例:(這里面的大小是指創(chuàng)建時(shí)指定的大小,看代碼)100*100px.
出處:WebStudio
責(zé)任編輯:moby
上一頁(yè) 下一頁(yè) flash 8 BitmapData 類的應(yīng)用 [2]
◎進(jìn)入論壇Flash專欄版塊參加討論
|