作者mucoci (奇寶~)
看板Flash
標題[討論] ShareObject存檔的使用
時間Tue May 13 12:25:09 2014
小弟日前經過兩三款的練功後
已順利發了幾款遊戲到google play商店
感謝本版的協助~~
不過
小弟今日在作存檔功能時
用了shareobject這東西
經過測試後
發現…
陣列類型的資料可直接儲存~~而且是即時的
例:
var myarray:Array= new Array();
myarray[1]= new 圖片1();
或
myarray[1]= 10; --->三秒後把10換成20;
myarray[2]= 20; --->三秒後把20變成30;
宣告存檔
var savedate:SharedObject = SharedObject.getLocal( "save", "/" );//存檔設定
存入
savedate.date.myarray=myarray; ////不用加入[]..真神奇
取出時
myarray=savedate.date.myarray;
小弟試著trace 陣列內的數值,會即時改變,如果是圖片的話,也會即時紀錄位置
但是
當不是陣列時…
例:
var a:Number=10; ---->隨著程式進行變成20
a竟然只會是原來"存檔"的10
不會變即時資料…
雖然解決方法很多很簡單,不過為什麼會有這種差異呢?有人知道嗎~~?
還是我理解錯誤了~~?
//附上程式碼給大家參考///////////////////////
var gaarmynum:Array=new Array();
var atnum:Number=10;
var mcTimer= new Timer(1000);//計時器
mcTimer.addEventListener(TimerEvent.TIMER, add1); //時間到執行
mcTimer.start();//開始
function add1(e:Event):void //每秒增加1
{
gaarmunum[1]=gaarmunum[1] +1;
gaarmunum[2]=gaarmunum[2] +1;
]
if (敵人死掉)//特定狀況才減1
{
atnum=atnum-1;
}
save_mc.addEventListener(MouseEvent.CLICK, save_act);
function save_act(me:MouseEvent):void//方位及勝負判定
{
save.data.gaarmynum=gaarmynum;
save.data.atnum=atnum;
save.flush();
}
存檔後
trace save.date.gaarmynum[1]; --->20 即時隨秒數增加 (無誤)
trace save.date.atnum; --->10,沒有任何敵人死亡者 (無誤)
存檔後10秒再trace
trace save.date.gaarmynum[1]; --->30 即時隨秒數增加 (無誤)
trace save.date.atnum; --->仍為10 ,沒有任何敵人死亡者 (無誤)
讀檔
trace save.date.gaarmynum[1]; --->30 即時隨秒數增加 (無誤)
trace save.date.atnum; --->仍為10 ,沒有任何敵人死亡者 (無誤)
讀檔後十秒(且1個敵人死亡,未存檔)
trace save.date.gaarmynum[1]; --->40 即時隨秒數增加 (無誤)
trace save.date.atnum; --->仍為10 ,沒有任何敵人死亡者 (有誤)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.66.171
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Flash/M.1399955112.A.4E4.html
1F:推 KawasumiMai:不太懂 05/13 13:48
2F:→ KawasumiMai:myarray類別陣列,savedate.date.myarray型態也是陣列 05/13 13:48
3F:→ KawasumiMai:所以myarray=savedate.date.myarray自然可以通 05/13 13:48
4F:→ KawasumiMai:var a:Number=10 是讀取的還是自己宣告的? 05/13 13:48
5F:→ KawasumiMai:無法隨著程式修改成20嗎?還是寫入shareObject失敗? 05/13 13:49
6F:→ KawasumiMai:這部分缺少了相關的code,看不出問題出在哪 05/13 13:49
7F:→ mucoci:只是很單純的把要存入的資料從陣列改成a 變數 05/13 14:10
8F:→ mucoci:然而 a改變後 savetata並沒有即時改變…很怪 05/13 14:11
※ 編輯: mucoci (218.173.66.171), 05/13/2014 14:26:30
9F:推 viceversa56:什麼遊戲? 想下載玩玩 05/13 20:25
10F:推 SheLoBDenI:照理說為存檔有誤的應該是你的秒數,不是死亡數。 05/13 20:32
11F:→ SheLoBDenI:但既然結果是這樣就讓我想到之前在處理array的問題 05/13 20:33
12F:→ SheLoBDenI:當ArrayA = ArrayB的時候不管對哪個做處理,兩個都會變 05/13 20:33
13F:→ SheLoBDenI:這牽扯到AS3的基礎問題。 05/13 20:36
14F:→ SheLoBDenI:照理說(未)存檔。所以其實沒有問題喔。 05/13 20:37
15F:→ mucoci:的確是陣列的參照問題~~不過小弟半路出家,基礎不好.所以 05/13 21:19
16F:→ mucoci:還真不知道這問題... 05/13 21:19
17F:→ mucoci:想下載來玩玩看的,可於google play找僵屍大戰Lite 05/13 21:20
18F:→ mucoci:不過用as3作遊戲好快呀~~~~ 05/13 21:21
19F:→ mucoci:另一款可找 魔王的寵物 06/27 11:06