flash位图技术研究篇(2):渲染缓冲区
2010-03-02 00:00:00 来源:WEB开发网当中还有个判断区域,这个移动区域不能超出我们最大底图的宽度和高度。
填充位图
对于缓冲区并不能显示到我们的窗口里面,为了显示到我们的窗口,我们还要将其数据填充到窗口里面。我们所使用的是Graphics 类包提供给我们的一些简单的方法。如
1. public function FillMap(data:BitmapData):void
2. {
3. sprite.graphics.clear();
4. sprite.graphics.beginBitmapFill(data,null,false,false);
5. sprite.graphics.drawRect(0,0,data.width,data.height);
6. sprite.graphics.endFill();
7. addChild(sprite);
8.
9. }
完整代码:
1. package
2. {
3.
4. import flash.display.Sprite;
5. import flash.display.*;
6. import flash.events.*;
7. import flash.geom.*;
8.
9. public class Map extends Sprite
10. {
11. private var mapWidth:Number;//地图的宽度
12. private var mapHeight:Number;//地图高度
13. private var mapX:Number;//地图的x坐标
14. private var mapY:Number;//地图的y坐标
15.
16. private var mapArray:Array;
17. private var mapdata:BitmapData;
18. public var sprite:Sprite=new Sprite();//做一个容器使用
19. public var rect:Rectangle;//地图的矩形外形
20. public var bitmap:Bitmap;
21. private var buffer:BitmapData;//缓冲区
22.
23. public function Map(mapdata:BitmapData,mapX:Number,mapY:Number)
24. {
25. this.mapdata=mapdata;
26. //this.mapX=mapX;
27. //this.mapY=mapY;
28. this.mapWidth=mapdata.width;
29. this.mapHeight=mapdata.height;
30. bitmap=new Bitmap(mapdata);
31. rect=bitmap.getRect(bitmap);//获取地图的矩形
32. }
33. public function get MapInfo():BitmapData
34. {
35. return mapdata;
36. }
37. public function CreateMap(bufferwidth:Number,bufferheight:Number):void
38. {
39. buffer=new BitmapData(bufferwidth,bufferheight,false,0xFFFFFFFF);//设置缓冲区
40. buffer.fillRect(new Rectangle(0,0,bufferwidth,bufferheight),0x0000FF00);//填充缓冲区
41. trace(rect.y);
42.
43. if (rect.x<0 )
44. {
45. rect.x=0;
46. }
47. trace(mapWidth);
48. if (rect.x+buffer.width>mapWidth)
49. {
50. rect.x=mapWidth-buffer.width;
51. }
52. if (rect.y<=0)
53. {
54. rect.y=0;
55. }
56. if (rect.y+buffer.height>mapHeight)
57. {
58. rect.y=mapHeight-buffer.height;
59. }
60. buffer.copyPixels(mapdata,new Rectangle(rect.x,rect.y,bufferwidth,bufferheight),new Point(0,0));//矩形的坐标变化,会裁剪出不同的位图数据
61. FillMap(buffer);//填充位图数据
62.
63. }
64. public function FillMap(data:BitmapData):void
65. {
66. sprite.graphics.clear();
67. sprite.graphics.beginBitmapFill(data,null,false,false);
68. sprite.graphics.drawRect(0,0,data.width,data.height);
69. sprite.graphics.endFill();
70. addChild(sprite);
71.
72. }
73. }
74. }
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
为没有拉伸、旋转或色彩效果的图像之间的像素处理提供一个快速例程。
clear():
填充完后,加加入显示列表里面,我们就能看到我们所需要的位图。
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接