目录
一、目的
1、想:在flash中写xml文件
二、参考
1、
三、操作:Flash读写xml
1、版本是:air的,代码是as3
2、资源使用
3、xml文件设置
注意:
1、数量要少于下面的坐标数量
2、写入后,系统默认的xml阅读器看这个文件分行是乱的,我使用notepad++查看xml文件时候是按照顺序排列的
3、在里面注释没有用,写入后注释都没有了
4、xml文件只能是和flash一个路径,不能是上一层或者下一层距离
5、此项目只能从flash中运行,exe、swf都运行不了
4、代码
import flash.events.KeyboardEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.display.StageDisplayState;
//此全屏模式可以按键输入
this.stage.displayState=StageDisplayState.FULL_SCREEN_INTERACTIVE;
//xml信息
var myXML:XML = new XML ;
var myXMLURL:URLRequest = new URLRequest("config_flash.xml");
var myLoader:URLLoader = new URLLoader(myXMLURL);
var fs:FileStream;
var file:File;
var xmlPath:String;
myLoader.addEventListener(Event.COMPLETE, LoadPos);
//读写的物体位置
var InsectNum:int = 0;
var Insect:Array = new Array();
var PosX:Array = new Array();
var PosY:Array = new Array();
var CurrentIns:int = 0;
Init();
function Init()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,Down);
}
function LoadPos(e:Event):void
{
myXML = XML(myLoader.data);
InsectNum = myXML.num;
AddInsect();
}
function AddInsect():void
{
for (var i:int = 0; i<InsectNum; i++)
{
var Pos:Object = myXML.pos[i];
PosX[i] = int(Pos. @ x);
PosY[i] = int(Pos. @ y);
var aa:YaChong = new YaChong();
Insect.push(aa);
Insect[i].rect.visible = false;
}
addChild(Insect[0]);
Insect[0].x = PosX[0];
Insect[0].y = PosY[0];
Insect[CurrentIns].rect.visible = true;
}
function Down(e:KeyboardEvent):void
{
switch (e.keyCode)
{
case 37 :
Insect[CurrentIns].x--;
break;
case 38 :
Insect[CurrentIns].y--;
break;
case 39 :
Insect[CurrentIns].x++;
break;
case 40 :
Insect[CurrentIns].y++;
break;
case 83 :
if (CurrentIns < InsectNum)
{
SaveXML();
}
break;
case 90 :
if (CurrentIns > 0)
{
Insect[CurrentIns].rect.visible = false;
CurrentIns--;
Insect[CurrentIns].rect.visible = true;
}
break;
case 88 :
if (CurrentIns<InsectNum-1)
{
Insect[CurrentIns].rect.visible = false;
CurrentIns++;
Insect[CurrentIns].rect.visible = true;
}
break;
}
}
function SaveXML():void
{
xmlPath = "config_flash.xml";
fs = new FileStream ;//使用 FileStream 对象读取和写入文件
file = new File(File.applicationDirectory.resolvePath(xmlPath).nativePath);
fs.open(file,FileMode.READ);//以同步方式打开 FileStream 对象,指向由 file 参数指定的文件。
var _xml:XML = XML(fs.readUTFBytes(fs.bytesAvailable)); //获取xml内容
PosX[CurrentIns] = Insect[CurrentIns].x;
PosY[CurrentIns] = Insect[CurrentIns].y;
_xml.pos[CurrentIns]. @ x = PosX[CurrentIns].toString();
_xml.pos[CurrentIns]. @ y = PosY[CurrentIns].toString();
fs.open(file,FileMode.WRITE);//重新以写方式打开文件,目的在于清除原有的内容
fs.writeUTFBytes(_xml); //写入修改过后的XML
fs.close();
if (CurrentIns<InsectNum-1)
{
Insect[CurrentIns].rect.visible = false;
CurrentIns++;
addChild(Insect[CurrentIns]);
Insect[CurrentIns].x = PosX[CurrentIns];
Insect[CurrentIns].y = PosY[CurrentIns];
Insect[CurrentIns].rect.visible = true;
}
}