游戏地图分块加载资源篇——切图工具
2011-12-30 14:43
495 查看
package code.imageDivied { import com.cg.as3.data.encoder.JPEGEncoder; import flash.display.Bitmap; import flash.display.BitmapData; import flash.filesystem.File; import flash.filesystem.FileMode; import flash.filesystem.FileStream; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.utils.ByteArray; import mx.controls.Alert; /** * 切图工具功能类 * @author Semon * @Email sxw52039@qq.com */ public class ImageDivided { private var _target:BitmapData; private var _width:Number; private var _height:Number; private var _imageWidth:Number; private var _imageHeight:Number; private var _savePath:String; /** * 构造函数 * @param target 大地图对象 * @param width 小块地图的宽 * @param height 小块地图的高 * @param savePath 设定的保存路径,格式如(D:/tools/) * */ public function ImageDivided(target:BitmapData,width:Number,height:Number,savePath:String) { if(target!=null&&width>0&&height>0&&savePath!="") { _target=target; _width=width; _height=height; _savePath=savePath; _imageWidth=_target.width; _imageHeight=_target.height; } else throw new Error("参数不正确!"); } /** * 主要功能是将大图切成小图 * 功能类JPEGEncoder可网络上下载 */ public function start():void { var spanX:Number=Math.floor(_imageWidth/_width); var spanY:Number=Math.floor(_imageHeight/_height); var wleave:Number=_imageWidth%_width; var hleave:Number=_imageHeight%_height; var width:Number=_width; for(var i:uint=0;i<spanY;i++) { if(i==spanY-1&&hleave!=0) height=hleave; var height:Number=_height; for(var j:uint=0;j<spanX;j++) { if(j==spanX-1&&wleave!=0) width=wleave; var bmp:BitmapData=new BitmapData(width,height); bmp.draw(_target,new Matrix(1,0,0,1,-j*width,-i*height),null,null,new Rectangle(0,0,width,height)); var jpe:JPEGEncoder = new JPEGEncoder(80); savePicture(jpe.encode(bmp),i+"_"+j+".jpeg"); } } Alert.show("Success","Message"); } /** * 保存 图片到本地 * @param data 经过格式化的图片数据 * @param fileName 指定的文件名 * */ private function savePicture(data:ByteArray,fileName:String):void { var fl:File = File.desktopDirectory.resolvePath(_savePath+fileName); var fs:FileStream = new FileStream(); try { fs.open(fl,FileMode.WRITE); fs.writeBytes(data); fs.close(); } catch(e:Error) { Alert.show(fileName+"保存失败","Message"); } } } }
转的好东东
相关文章推荐
- Unity3D AssetBundles 动态加载游戏资源
- Unity3D的网络游戏中实现资源动态加载
- Flash资源共享库打包工具Swift-tool关于字体加载的问题
- Silverlight游戏设计(Game Design):(十四)练习用游戏素材资源的获取及相关工具使用心得
- 在Arcmap中加载互联网地图资源的4种方法
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
- 通用型游戏资源提取工具介绍收藏
- 在Unity3D的网络游戏中实现资源动态加载
- unity中异步加载游戏场景与异步加载游戏资源进度条
- Unity3D AssetBundles 动态加载游戏资源
- 工具函数--从程序集加载指定资源
- 【木头Cocos2d-x 009】游戏实例-《跑跑跑》制作教程(第一篇)——加载地图
- 地图分块加载的实现
- 在Unity3D的网络游戏中实现资源动态加载
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- 在Unity3D的网络游戏中实现资源动态加载
- Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
- 在Unity3D的网络游戏中实现资源动态加载
- Unity5提取游戏资源的三大工具
- 在Unity3D的网络游戏中实现资源动态加载