您的位置:首页 > Web前端 > JavaScript

json xml flash

2015-08-17 16:41 681 查看
JSON

private function _saveData(event:Event):void

{

var newFile:File = event.target as File;

var str:String = DrawMapGrid.getInstance().generateMapArray();

var stream:FileStream = new FileStream();

//write模式存在就替换

stream.open(newFile, FileMode.WRITE);

stream.writeUTFBytes(str);

stream.close();

}

JSON

public function generateMapArray():String{

var mapPath:String = "";

mapPath += '{';

mapPath += '"'+'mapW'+'":'+Data.mapDataVO.mapW+",";

mapPath += '"'+'mapH'+'":'+Data.mapDataVO.mapH+",";

mapPath += '"'+'mapGridW'+'":'+Data.mapDataVO.mapGridW+",";

mapPath += '"'+'mapGridH'+'":'+Data.mapDataVO.mapGridH+",";

mapPath += '"'+'divideBlockW'+'":'+Data.divideBlockW+",";

mapPath += '"'+'divideBlockH'+'":'+Data.divideBlockH+",";

mapPath += '"'+'mapFlagArr'+'":[';

for(var i:int=0;i<mapTileArray.height;i++){

for(var j:int=0;j<mapTileArray.width;j++){

//trace(j+":"+i+" -- "+MapTile(mapTileArray.get(j,i)).tileState);

var tileState:int = MapTileVO(mapTileArray.get(j,i)).tileState;

mapPath += tileState + ',';

}

}

mapPath = mapPath.substring(0,mapPath.length-1);

mapPath += ']}';

return mapPath;

}

=============================================================================

/**

* 地图文件另存为

*/

public function onSaveAs(e:*,data:String=''):void

{

// 若e含有target对象,则以target为file对象(另存为),否则直接将e取为file对象(保存)

var file:File = e.hasOwnProperty('target') ? e.target as File : e as File;

// 通过二进制数据进行压缩

var ba:ByteArray = new ByteArray();

ba.writeUTFBytes(data=='' ? _root.Shower.Configer : data);

XML

/**

* 生成当前地图的配置文件

*/

public function get Configer():String

{

var result:String = "<map>\n";

result+="<id>"+(_scene==null ? D5Power.mapid : _scene.Map.mapid)+"</id>\n"; // 地图ID

result+="<hasTile>"+D5Power.hasTile+"</hasTile>\n"; // 是否采用区块构图

result+="<loopbg>"+(_scene==null ? '' : _scene.Map.loopBG)+"</loopbg>\n";

result+="<tileFormat>"+(_scene==null ? '' : _scene.Map.tileFormat)+"</tileFormat>\n";

result+="<tileX>"+Global.TILE_SIZE.x+"</tileX>\n";

result+="<tileY>"+Global.TILE_SIZE.y+"</tileY>\n";

result+="<mapW>"+Global.MAPSIZE.x+"</mapW>\n";

result+="<mapH>"+Global.MAPSIZE.y+"</mapH>\n";

result+="<music>"+MusicPath+"</music>";

result+="<script>"+ScriptPath+"</script>";

var obj:Array = _scene==null ? new Array() : _scene.getAllObjects();

var res_npc:String = "\n\n<npc>\n";

var res_bud:String = "\n\n<build>\n";

var res_road:String = "\n\n<roadpoint>\n";

for each(var o:GameObject in obj)

{

switch(o.objectName)

{

case 'NCharacterObject':

var nco:NCharacterObject_MaEd = o as NCharacterObject_MaEd;

res_npc+="<obj>\n";

res_npc+="<res>"+nco.graphicsRes.resName+"</res>\n";

res_npc+="<posx>"+nco.PosX+"</posx>\n";

res_npc+="<posy>"+nco.PosY+"</posy>\n";

res_npc+="<name>"+nco.username+"</name>\n";

res_npc+="<lua>"+nco.lua_filename+"</lua>\n";

res_npc+="<uid>"+nco.uid+"</uid>\n";

res_npc+="</obj>\n";

break;

case 'BuildingObject':

var nbo:BuildingObject = o as BuildingObject;

res_bud+="<obj>\n";

res_bud+="<res>"+nbo.graphicsRes.resName+"</res>\n";

res_bud+="<canBeAtk>"+nbo.canBeAtk+"</canBeAtk>\n";

res_bud+="<zorder>"+nbo.zOrderF+"</zorder>\n";

res_bud+="<posx>"+nbo.PosX+"</posx>\n";

res_bud+="<posy>"+nbo.PosY+"</posy>\n";

res_bud+="<centerx>"+nbo.zero.x+"</centerx>\n";

res_bud+="<centery>"+nbo.zero.y+"</centery>\n";

res_bud+="</obj>\n";

break;

case 'RoadPoint':

var road:RoadPoint = o as RoadPoint;

res_road+="<obj>\n";

res_road+="<posx>"+road.PosX+"</posx>\n";

res_road+="<posy>"+road.PosY+"</posy>\n";

res_road+="<toMap>"+road.toMap+"</toMap>\n";

res_road+="<toX>"+road.toX+"</toX>\n";

res_road+="<toY>"+road.toY+"</toY>\n";

res_road+="</obj>\n";

break;

}

}

res_npc+="</npc>\n";

res_bud+="</build>\n";

res_road+="</roadpoint>\n";

result+=res_npc;

result+=res_bud;

result+=res_road;

result+="</map>";

return result;

}

========================================

/**

var txt:TextField = new TextField();

txt.blendMode = BlendMode.LAYER;

txt.cacheAsBitmap = true;

txt.selectable = txt.border = false;

txt.defaultTextFormat = new TextFormat(null,10,0,false,false,false,null,null,"center");

txt.text = x + "," + y;

txt.width = 100;

txt.height = 25;

getRealPosition(x, y, temp);

//temp.y -= GlobalModel.PIECE_HEIGHT;

temp.x -= GlobalModel.PIECE_WIDTH;

txt.x = temp.x;

txt.y = temp.y;

this.addChild(txt);

*/

======================================

/**

* 保存mpt地图数据文件

*/

public function saveMapData(f:File):void{

var file:File = f;

var ba:ByteArray=new ByteArray(); //guan:用byte的方法进行写入

ba.writeShort(GlobalModel.PIECE_WIDTH);

ba.writeShort(GlobalModel.PIECE_HEIGHT); //guan:以上是格子的 宽,高

ba.writeShort(comVirtualGrid.gridLayer.col);

ba.writeShort(comVirtualGrid.gridLayer.col); //guan:格子层 的 col = 73

ba.writeShort(comVirtualGrid.grid_w);

ba.writeShort(comVirtualGrid.grid_h); //图片的 宽 高

ba.writeShort(comVirtualGrid.gridLayer.iConnectedPointY); //iConnectedPointY

for(var i:int=0;i<10;i++)

ba.writeInt(0); //guan:写入 10 个0

for(var y:int=0;y<dataArray.length;y++){ //guan:不可编辑区域 写入 1 ,可编辑区域 写入的还是原来的值

for(var x:int=0;x<dataArray[y].length;x++){ //dataArray 记录是否可编辑 信息

if(dataArray[y][x]==9){

ba.writeByte(1);

trace("这个是不可编辑区域,将它写进数组里的值为:1 in method SaveHandle from ComVirtualGrid");

}

else{

ba.writeByte(dataArray[y][x]);

trace(y+","+x+"的值为:"+dataArray[y][x]); //可编辑区域

}

}

}

ba.compress(); //采用默认的zlib压缩算法压缩文件。

//var fileStream:FileStream = new FileStream();

// fileStream.open(file,FileMode.WRITE);

// fileStream.writeBytes(ba);

//file.browseForSave("保存地图数据");

var fileStream:FileStream = new FileStream();

fileStream.open(file,FileMode.WRITE); //guan: 我的理解:文件流 写模式

fileStream.writeBytes(ba); //guan:写入字节

fileStream.close(); //guan:文件流关闭

onSaveServerMapData(file);

}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: