flash位图技术研究篇(2):渲染缓冲区
2010-03-02 00:00:00 来源:WEB开发网我们简单分析一下,这个地图类,地图类包括的属性有地图数据,图的数据,有地图的坐标,宽度等等。
这个类中,我们引入一个创建图的方法。
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));//矩形的坐标变化,会裁剪出不同的位图数据
看一下完整的代码:
1. public function CreateMap(bufferwidth:Number,bufferheight:Number):void
2. {
3. buffer=new BitmapData(bufferwidth,bufferheight,false,0xFFFFFFFF);//设置缓冲区
4. buffer.fillRect(new Rectangle(0,0,bufferwidth,bufferheight),0x0000FF00);//填充缓冲区
5. trace(rect.y);
6.
7. if (rect.x<0 )
8. {
9. rect.x=0;
10. }
11. trace(mapWidth);
12. if (rect.x+buffer.width>mapWidth)
13. {
14. rect.x=mapWidth-buffer.width;
15. }
16. if (rect.y<=0)
17. {
18. rect.y=0;
19. }
20. if (rect.y+buffer.height>mapHeight)
21. {
22. rect.y=mapHeight-buffer.height;
23. }
24. buffer.copyPixels(mapdata,new Rectangle(rect.x,rect.y,bufferwidth,bufferheight),new Point(0,0));//矩形的坐标变化,会裁剪出不同的位图数据
25. FillMap(buffer);//填充位图数据
26.
27. }
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接