当前位置:首页>网络学院>网页制作>Flash教程>文章内容

flash 8 BitmapData 类的应用

[ 来源:www.it55.com | 作者: | 时间:2007-07-12 | 收藏 | 推荐 ] 【

BitmapData类是什么

Flash.display.bitmapData允许我们使用像素层级来控制位图,这意味着什么呢,好,在下面的简介中我们将简介它能做什么。
·复制和粘贴整个图像,部分图案。或者是每一个独立的像素。
·鉴别或是改变像素或是像素群组的颜色。
·应用新的FLASH滤镜。
·创建随机的像素(noise或perlin noise)等等。
它还可以将bitmapDate应用到视频上。

创建bitmapData 类的实例 vd;k;l www.it55.com rdfg

我们用如下的方法创建bitmapData实例
bmap=new flash.display.BitmapData(100,100,false,0);
BitmapData类提供了四个参数
width(number数值,像素宽)
Height(number数值,像素高)
Alpah值(boolean布尔值)
Default background color fill(默认添充的背景色)(number数值)
因此从上面代码,我们可以看出我创建了一个100*100方形,不允许alpha透明,指定0为背景色,也就是黑色。
注意:到目前为,我不能确定是否alpha值只与BMD的背景alpha相关连,或是它是否只是允许图像中的像素透明。

it55.com

Copy & Paste
复制和粘贴

vd;k;l www.it55.com rdfg

也许最好的例子就是从最基础的复制和粘贴操作开始。想象一下通过BMD从图像上来复制和粘贴像素。例如,在flashmx2004或是更早的版本中,载入图像到movieclip中然后在movieclip中复制来查看所复制的图像是不可能的。因为任何载入的图像都必须重新加载,如果你想看更多的复制内容。
我们当然也可以在创作时手动的导入图片,也许这是最简单方法,我们将在第一例子中使用这种方。

下载第一个范例文件sample fla(bmap.zip),在你继续进行之前,先快速的看一下这个文件。
这里面有三个对象是关于”复制和粘贴”的.
1.源图像(source)
2.创建的BitmapData实例(bmap) 
3.目标MovieClip(dest2)
对于目标MovieClip的创建我们可以选择两种方式
1.手动创建一个MovieClip,本例中设置的长宽分别为100.
2.以使用CreateEmptyMovieClip();来创建。
在我们的第一个例子中,我们使用的方法是第一种,在创作时创建一个movieClip.

Example 1:
范例1


我们已经放置了两个MovieClip在主场景中。
第一个MovieClip中包含一个图片,大小是100*100像素,实例名称为source.第二个MovieClip包含一个橙色的图形,大小也是100*100像素,这个MC的实例名为dest2. vd;k;l www.it55.com rdfg
为了复制整张图像,我们可以如下来做: it55.com

代码:

bmp=new flash.display.BitmapData(100,100,false,0);
bmap.draw(source);
dest2.attachBitmap(bmp,1);

sflj www.it55.com kg^&fgd

vd;k;l www.it55.com rdfg

第一行我们创建了BMD的实际,名为bmp并且它的大小与我们图像的大小是一致的。第二行,在BMD上复制图像,你可以用下例语法将一个movieClip放在BMD中。
SomeBMDinstance.draw(someMovieClip);
最后我们想看到在BMD上的复制结果,当前你并不能看到结果直到你将它贴加到一个MovieClip上为止。如下语法:

www.it55.com在线教程

代码:

免费资源www.it55.com

destinationMC.attachBitmap(someBMDinstance,depth);

sflj www.it55.com kg^&fgd

注意:attachBitmap实际上有4个参数,全部参数如下:
attachBitmap(bmp:BitmapData, depth:Number, pixelSnapping:String, smoothing:Boolean)
前两个参数一个是bitmapdata类的引用名,一个是深度。
第三个参数pixelSnapping(像素对齐)有三种选择,
Auto:当位图没有进行变形或是旋转来进行像素对齐。
Always:不管位图是否进行过变形或是旋转都要进行像素对齐。
Never:从不进行像素对齐。
默认下为auto.
第四个参数:smoothing(光滑):它是布尔值,用来决定是否对缩放过的图像进行光滑。

在本例中我们只需要用到前两个参数。在你测试运行的时候,你就会发现源图像已经被复制到目标MC中了。

那么,现在我们回到开始我们说过的使用创作时手动创建或是使用createEmptyMovieClip()创建的MovieClip。当我们将BMD的实例粘贴到我们创建的MC中时,我们会想到一些问题,比如,如果BMD实例大于source影片剪辑,或是目标MC(dest2)小于BMD实例等等会发生什么呢。

下面我们将用几张图片的形式来说明问题:
需要注意的是,图片下面说明文字中的source源和dest2目标MC不是指的是影片剪辑本身而指是影片剪辑内的内容,如果要指定影片剪辑会加说明。

45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

flash 8 BitmapData 类的<a href='/html/xueyuan/chengxukaifa/Perlyingyongjiaocheng'><u>应用</u></a>(图一)

http://www.it55.com/

www.it55.com在线教程

souce源里面的内容:100*100px(影片剪辑本身未缩放);
dest2目标剪辑的内容:100*100px(影片剪辑本身未缩放)
BMD实例:(这里面的大小是指创建时指定的大小,看代码)100*100px.

45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn

下面是我们实验的内容:

免费资源www.it55.com

flash 8 BitmapData 类的<a href='/html/xueyuan/chengxukaifa/Perlyingyongjiaocheng'><u>应用</u></a>(图一) www.it55.com在线教程

http://www.it55.com/

souce源里面的内容:100*100px(影片剪辑本身未缩放);
dest2目标剪辑的内容:50*50px(内容进行了缩放,影片剪辑本身未缩放)
BMD实例: 100*100px.
注意:虽然目标里的内容只有源MC里内容的一半,但复制的内容大小仍是BMD实例的大小。

IT资讯之家 www.it55.com

flash 8 BitmapData 类的<a href='/html/xueyuan/chengxukaifa/Perlyingyongjiaocheng'><u>应用</u></a>(图二) sflj www.it55.com kg^&fgd

it55.com

souce源里面的内容:100*100px(影片剪辑本身未缩放);
dest2目标剪辑的内容:100*100px(内容未进行缩放,影片剪辑本身缩放50*50)
BMD实例: 100*100px.
我们看出整个源的内容已经被获取,并复制到目标中,由于目标进行了缩放,所以图像也进行了缩放。

(阅读次数:

返回顶部
共3页: 上一页 1 [2] [3] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]

最新文章