flash位图技术研究篇(2):渲染缓冲区

   有一段时间没有理会过自己的博客,今天突然很想写一些日志。回想最近的事情,找工作的郁闷事情。毕业后,遇到一个人面兽心的主管。虽然工作了两个月,但是找工作依然是严峻。没有工作,何来经验,企业要求是经验,而大学毕业何来经验?十分的矛盾。不管什么事情了,还是坚持我们的所爱的,只要坚持下去,我想一定会有所成绩。只要时机来临了,一定会变得好起来了。回归到主题。

 

 渲染缓冲区,今天很想探讨一些缓冲填充的技术。其实也不算什么技术,我们可以理解为画画。我们打开一张纸,然后在画面上填充我们想要的东西。首先让我了解一下,as3.0提供了BitmapData和Graphics类,这两种类为我们提供了一些操作位图的数据。

  
 
好,看看如何去实现我们的位图填充。
    新建一个类,名为Map类,地图类继承Sprite类,作为它的子类。
接下来,加入构造函数:
我们简单分析一下,这个地图类,地图类包括的属性有地图数据,图的数据,有地图的坐标,宽度等等。
 
这个类中,我们引入一个创建图的方法。
public function CreateMap(bufferwidth:Number,bufferheight:Number):void
 
这个方法带三个参数,bufferwidth是指缓冲区的宽度,
bufferheight指缓冲区的高度
 
然后,我们所做的事情,包括,创建一个渲染的缓冲区,指定他的大小
如:
buffer=new BitmapData(bufferwidth,bufferheight,false,0xFFFFFFFF);//设置缓冲区
这样就可以指定了一个填充的缓冲区。
 
复制像素到缓冲区:
  由于缓冲区 上面的域并没有什么信息数据,为了能让这个缓冲区有内容,我们使用复制像素的做法,复制我们所需要的像素。他就像一个“回”上面的口字可以看作我们的视框,而下面就是一张底图,每次我们移动图形的时候,复制的仅仅是我们所看到区域,填充的区域仅仅是我们规定的缓冲区大小。这样做法,有利于我们的内存使用。
如:
   buffer.copyPixels(mapdata,new Rectangle(rect.x,rect.y,bufferwidth,bufferheight),new Point(0,0));//矩形的坐标变化,会裁剪出不同的位图数据
看一下完整的代码:
 
当中还有个判断区域,这个移动区域不能超出我们最大底图的宽度和高度。
 
 
填充位图
对于缓冲区并不能显示到我们的窗口里面,为了显示到我们的窗口,我们还要将其数据填充到窗口里面。我们所使用的是Graphics 类包提供给我们的一些简单的方法。如

 

完整代码:
 
 
  
copyPixels(sourceBitmapData: BitmapData, sourceRect: Rectangle, destPoint: Point, alphaBitmapData: BitmapData = null, alphaPoint: Point = null, mergeAlpha: Boolean = false): void
为没有拉伸、旋转或色彩效果的图像之间的像素处理提供一个快速例程。

  
clear():
填充完后,加加入显示列表里面,我们就能看到我们所需要的位图。
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值