//1.将一个二维数组存入sol文件
//2.二维数组如下:
/*var chapters:Array = new Array(10);
chapters[0] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[1] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[2] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[3] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[4] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[5] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[6] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[7] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[8] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[9] = [0, 0, 0, 0, 0, 0, 0, 0];*/
//3.ctrl+Enter测试本文件,然后点击输入-修改-输入-修改,反复这样的操作,输出一切正常;
//4.可以自己更改:soData.chapters[3][4]=0;来测试
//5.问题来了:使用.minerva 3.3.0打开test.sol文件,然后什么都不修改,直接点击"Save"按钮
//6.再试一下第三个步骤,看看输出还是不是正常?
//7.我的测试是不正常的,只修改其中一个数组时,竟然会影响其他数组,这应该是.minerva的一个bug
//MySharedObject.as文件代码:
package {
import flash.net.SharedObject;
/**
* 将数据写入共享对像
* @author zkl
* 2011-5-3 15:44
*/
public class MySharedObject {
//实例化一个SharedObject对像
public var so:SharedObject;
/**
* 返回一个共享对像,指定文件名和路径
* @param soFileName:文件名
* @param path:文件路径
*/
public function MySharedObject(soFileName:String, soPath:String = "/"):void {
//返回一个本地的永久共享对像,如果不存在则创建。
if (so != null) so = null;
so = SharedObject.getLocal(soFileName, soPath);
//初始化数据
if (so.size == 0) {
var i:int, j:int;
var objData:Object = { };
var chapters:Array = new Array(10); //
chapters[0] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[1] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[2] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[3] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[4] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[5] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[6] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[7] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[8] = [0, 0, 0, 0, 0, 0, 0, 0];
chapters[9] = [0, 0, 0, 0, 0, 0, 0, 0];
so.data.chapters = chapters;
so.flush();
}else {
read();
}
}
/**
* 返回文件大小 0表示文件不存在
*/
public function get size():uint {
return so.size;
}
/**
* 写入数据
*/
public function write(obj:Object):void {
for (var s:String in obj){
so.data[s] = obj[s];
}
so.flush();
}
/**
* 读取数据
*/
public function read():Object {
var objData:Object = new Object();
for (var s:String in so.data){
objData[s] = so.data[s];
}
return objData;
}
} //end class
} //end package
//fla测试文件:
var so:MySharedObject=new MySharedObject("test","/");
var i:int,j:int;
var soData:Object=so.read();
//将所有元素值改为1
for (i=0; i<10; i++) {
for (j=0; j<8; j++) {
soData.chapters[i][j]=1;
}
}
so.write(soData);
//输出
traceBtn.addEventListener(MouseEvent.CLICK,traceHandler);
var n:int=0;
function traceHandler(e:MouseEvent):void {
soData=so.read();
trace("输出============================" + n++);
for (i=0; i<10; i++) {
trace(soData.chapters[i]);
}
}
//修改
testBtn.addEventListener(MouseEvent.CLICK,testHandler);
function testHandler(e:MouseEvent):void {
//1.使用.minerva打开test.sol,然后什么都不修改直接点“save”
//2.这时再修改试试,看看修改其中一个值,会不会影响其他的值
//修改一个值,试试它会影响哪些
soData.chapters[3][4]=0;
so.write(soData);
soData=so.read();
trace("修改后:");
for (i=0; i<10; i++) {
trace(soData.chapters[i]);
}
}