热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

xml文件转二进制文件的AIR

游戏开发中,有很多XML可能是很大的,比如一个任务配置文件,可能就接近2M(当然全部文件放在一个XML里面本身就有问题,比较好的做法就是分等级分隔XML),这样就需要对XML进行压缩。之前把文件压成

游戏开发中,有很多XML可能是很大的,比如一个任务配置文件,可能就接近2M(当然全部文件放在一个XML里面本身就有问题,比较好的做法就是分等级分隔XML),这样就需要对XML进行压缩。之前把文件压成ZIP包,然后读取ZIP,但现在读取ZIP文件里面的内容,是很卡的,后面改成读取二进制的XML数据,这样感觉不会卡,速度也很快。

 

实现思路也比较简单,使用二进制读取文件,然后调用保存。

"1.0" encoding="utf-8"?>
"http://www.adobe.com/2006/mxml" layout="absolute"
900" 350"
creatiOnComplete="init()"
alwaysInFrOnt="false">


import mx.controls.Alert;

private var filePath:String;
private var fileBytes:ByteArray;

private function init():void
{
var funArr:Array = [];

this.showStatusBar = true;
this.status = "Copyright©2012 meteoric_cry.net. Powered by Meteoric_cry";

bindBtnsEvent();
}

private function showTopHandler():void
{
if (this.stage.nativeWindow.alwaysInFront)
{
this.stage.nativeWindow.alwaysInFrOnt=false;
showTopBtn.label="前端显示";
}
else
{
this.stage.nativeWindow.alwaysInFrOnt=true;
showTopBtn.label="√前端显示";
}
}

private function bindBtnsEvent():void
{
selectBtn.addEventListener(MouseEvent.CLICK, onSelectHandler);
compressBtn.addEventListener(MouseEvent.CLICK, onCompressHandler);
saveBtn.addEventListener(MouseEvent.CLICK, onSaveHandler);
}

private function getTypeFilter():FileFilter
{
var str:String = "*.xml;";

var filter:FileFilter = new FileFilter("XML("+str+")", str);

return filter;
}

private function onSelectHandler(evt:MouseEvent):void
{
var file:File = new File();
file.addEventListener(Event.SELECT, selectFileCallback);
file.browseForOpen("请选择一个文件", [getTypeFilter()]);
}

private function selectFileCallback(evt:Event):void
{
clear();

var file:File = File(evt.target);
file.removeEventListener(Event.SELECT, selectFileCallback);

filePath = file.nativePath;

xmlPathIpt.htmlText = filePath;
}

private function clear():void
{
xmlPathIpt.htmlText = "";

filePath = null;
fileBytes = null;
}

private function onCompressHandler(evt:MouseEvent):void
{
if (filePath)
{
var file:File = new File(filePath);

if (file.isDirectory == false && file.exists)
{
var fs:FileStream = new FileStream();
fileBytes = new ByteArray();

fs.open(file, FileMode.READ);
fs.position = 0;
fs.readBytes(fileBytes, 0, fs.bytesAvailable);
fs.close();

fileBytes.compress();

Alert.show('文件压缩成功', '温馨提示', Alert.OK);
}
else
{
Alert.show(filePath + "不是一个正确的文件路径", '温馨提示', Alert.OK);
}
}
else
{
Alert.show('请选择要压缩的文件', '温馨提示', Alert.OK);
}
}

private function onSaveHandler(evt:MouseEvent):void
{
if (fileBytes)
{
var fileName:String = new File(filePath).name.replace(/\.xml/, '');

new FileReference().save(fileBytes, fileName + ".swf");

Alert.show("文件" + fileName + ".swf保存成功", '温馨提示', Alert.OK);
}
else
{
Alert.show('请先选择文件并进行压缩', '温馨提示', Alert.OK);
}
}

]]>


"前端显示" right="10" top="3" click="showTopHandler();" id="showTopBtn"/>

horizOntalScrollPolicy="off" verticalScrollPolicy="off"
paddingTop="100" paddingLeft="50" paddingRight="10" paddingBottom="10"
horizOntalGap="0" verticalAlign="middle">

"请选择要进行压缩的文件:" />
"xmlPathIpt" 400" editable="false" paddingLeft="2" paddingRight="2" />

paddingLeft="20">
"selectBtn" label="选择文件" />
"compressBtn" label="压缩文件" />
"saveBtn" label="保存文件" />






 

点击此处下载AIR>>


推荐阅读
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 探索12个能显著提升iPhone使用体验的隐藏技巧,掌握这些功能后,你会发现生活更加便捷高效。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • jQuery HooRay:一款自创的实用 jQuery 工具插件
    这款插件主要由作者在工作中积累的常用功能开发而成,旨在解决现有插件间的冲突及浏览器兼容性问题。通过整合和优化现有插件,确保其稳定性和高效性。 ... [详细]
  • 本文详细介绍了如何在WebStorm中配置File Watchers,以实现在编辑LESS文件时自动生成压缩后的CSS文件和对应的源映射(.map)文件。通过简单几步设置,可以大幅提升前端开发效率。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
author-avatar
烟熏装-_265
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有