AS3 CookBook学习整理(五)

1.编写遮罩

解决方法:
任何可视化对象都可以作为任一对象的遮罩,只需要指定对象的mask属性为某一可视化对象即可。
虽然遮罩即使不添加到显示列表也能正常工作,不过还是建议添加到显示列表

Example:

2.创建位图

一些概念:
矢量图和位图的区别:矢量图形是由数学方法描述图形元素,比如一条直线是从(x0,y0)到(x1,y1)。而位图把图形描述为一个矩形区域值集合,每个点都对应一个颜色值。

矢量图有两大优势:缩放和文件大小。当你缩放矢量图时,图像总能保持清晰,而位图当放大时就会出现锯齿状变得不清晰。

正因为矢量图是一个线条,曲线和图形的坐标组成的列表,所以它的文件和位图相比小很多。而位图要记录每个点的颜色值,信息量非常大,也就导致了文件的庞大。

矢量图的这种优势使它作为Flash媒体格式的最好形式,但是位图也有它自己的优点,比如位图能很好的表现照片,如果用矢量图去描述照片的所有颜色和图形,那结果就是比位图的文件还要大了。

位图另一个好处就是很容易进行处理,矢量图的每个曲线都是经过计算出来的,如果图像复杂就会花很长时间去处理,而位图就容易处理多了,无论多么复杂的动画,位图总能表现的很好。

32位16进制颜色值的得到方法:假如有0x0A5500EE,则表示alpha的值是0A,R(red)是55,G(green)是00,B(blue)是EE。关于alpha的值,其范围用十进制表示是在0--255之间,用十六进制表示就是00--FF。可以用int.toString(16)来进行十进制到十六进制的转换,如果转换的值为个位,则需要补0,例如1表示为01,e表示为0E

解决方法:

 


1. 构建一个BitmapData对象:var bitmap:BitmapData = new BitmapData(width,height,transparent,fillColor);
    width -- 位图的宽度
    height -- 位图的高度
    transparent -- 是否创建alpha通道,默认为true
    fillColor -- 32位16进制的颜色值,在transparent为true时,默认为0xFFFFFFFF
2. 新建Bitmap对象,以之前新建的BitmapData为参数:var image:Bitmap = new Bitmap(bitmap);
3. 直接添加该Bitmap对象:this.addChild(image);

Example:

 

3.绘制可视化对象到位图上

解决方法:
先在MovieClip或Sprite上画好,然后把对象画到位图上

Example:

4.载入外部图片到位图上

解决方法:
使用flash.display.Loader类载入图片,当图片载入完成时,loader的content属性就是一个Bitmap.访问Bitmap的bitmapData属性就在访问载入的图片

Example:

5.得到或设置位图上的像素

解决方法:
使用BitmapData类的getPixel(),setPixel,getPixel32()和setPixel32方法。例如:getPixel(mouseX,mouseY),setPixel(x,y,0xFF00FF00),getPixel()和setPixel()方法是专门为不透明的BitmapData类实例所用,而getPixel32()和setPixel32()则支持alpha通道的位图。可以通过BitmapData 构造器指定是否为透明位图

Example:

6.创建矩形填充

解决方法:
使用BitmapData类的fillRect()方法

Example:

7.创建充溢填充

解决方法:
所谓充溢填充,就是指完全填充一个不规则的区域。使用BitmapData类的floodFill()方法,调用形式为:floodFill(x,y,color),其中x,y为要填充的坐标点,color为坐标颜色。需要特别这样的是,填充的始终是该坐标点最上层的容器元素

Example:

8.拷贝位图里的部分像素

解决方法:
利用destBitmapData.copyPixels(sourceBitmapData,sourceRect,destPoint)来将源位图上某个区域的像素,拷贝到目标区域的某个坐标点。
 destBitmapData -- 目标位图
 sourceBitmapData -- 源位图
 sourceRect -- 源位图的矩形区域
 destPoint -- 目标位图的拷贝坐标点

Example:

9.创建噪波图案

解决方法:
使用BitmapData类的noise(seed,low,high,channel,grayscale)

seed -- 随机种子(注意,同一个seed生成的图片是一样的)

low -- 每个像素的最小值,范围在0到255(设置越高图案越亮)

high -- 每个像素的最大值,范围在0到255(设置越高图案越亮)

channel -- 指定把噪波应用到哪个通道上,其值可以是1,2,4,8;或者用BitmapDataChannel类的RED,GREEN,BLUE和ALPHA grayscale -- 一个布尔值,true表示随机值应用到三个通道上(当三个通道的值为相同时,即为灰色)。默认为false

Example:

10.使用阈值

解决方法:
使用BitmapData类的threshold()方法

 

public function threshold(

sourceBitmapData:BitmapData, //源位图

sourceRect:Rectangle, //源位图要进行比较的区域,全部为sourceBitmapData.rect   

destPoint:Point, //从左上角开始把原始位图覆盖到目标位图上,从(0,0)为new Point()

operation:String, //操作符,“<”、“<=”、“>”、“>=”、“==”、“!=”

threshold:uint, //阈值

color:uint = 0, //阈值测试成功时对像素设置的颜色值。默认值为0x00000000

mask:uint = 0xFFFFFFFF, //掩码,分4个通道进行比较,如只比较红色通道:0x00FF0000

copySource:Boolean = false //是否拷贝源位图,为false则只拷贝阈值测试成功的像素。为true则拷贝整个源位图比较区域

):uint

Example:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值