WEB开发网
开发学院图形图像Flash flash位图技术研究篇(2):渲染缓冲区 阅读

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

 2010-03-02 00:00:00 来源:WEB开发网   
核心提示: 当中还有个判断区域,这个移动区域不能超出我们最大底图的宽度和高度,flash位图技术研究篇(2):渲染缓冲区(3),填充位图对于缓冲区并不能显示到我们的窗口里面,为了显示到我们的窗口, clear():填充完后,加加入显示列表里面,我们还要将其数据填充到窗口里面,我们所使用的是Graphics

当中还有个判断区域,这个移动区域不能超出我们最大底图的宽度和高度。

填充位图

对于缓冲区并不能显示到我们的窗口里面,为了显示到我们的窗口,我们还要将其数据填充到窗口里面。我们所使用的是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():

填充完后,加加入显示列表里面,我们就能看到我们所需要的位图。

上一页  1 2 3 

Tags:flash 位图 技术

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接