最近在使用.minerva3.3.0的時候發現了一個bug

//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]);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章