[討論] ShareObject存檔的使用

看板Flash作者 (奇寶~)時間10年前 (2014/05/13 12:25), 10年前編輯推噓3(3016)
留言19則, 4人參與, 最新討論串1/2 (看更多)
小弟日前經過兩三款的練功後 已順利發了幾款遊戲到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://www.ptt.cc/bbs/Flash/M.1399955112.A.4E4.html

05/13 13:48, , 1F
不太懂
05/13 13:48, 1F

05/13 13:48, , 2F
myarray類別陣列,savedate.date.myarray型態也是陣列
05/13 13:48, 2F

05/13 13:48, , 3F
所以myarray=savedate.date.myarray自然可以通
05/13 13:48, 3F

05/13 13:48, , 4F
var a:Number=10 是讀取的還是自己宣告的?
05/13 13:48, 4F

05/13 13:49, , 5F
無法隨著程式修改成20嗎?還是寫入shareObject失敗?
05/13 13:49, 5F

05/13 13:49, , 6F
這部分缺少了相關的code,看不出問題出在哪
05/13 13:49, 6F

05/13 14:10, , 7F
只是很單純的把要存入的資料從陣列改成a 變數
05/13 14:10, 7F

05/13 14:11, , 8F
然而 a改變後 savetata並沒有即時改變…很怪
05/13 14:11, 8F
※ 編輯: mucoci (218.173.66.171), 05/13/2014 14:26:30

05/13 20:25, , 9F
什麼遊戲? 想下載玩玩
05/13 20:25, 9F

05/13 20:32, , 10F
照理說為存檔有誤的應該是你的秒數,不是死亡數。
05/13 20:32, 10F

05/13 20:33, , 11F
但既然結果是這樣就讓我想到之前在處理array的問題
05/13 20:33, 11F

05/13 20:33, , 12F
當ArrayA = ArrayB的時候不管對哪個做處理,兩個都會變
05/13 20:33, 12F

05/13 20:36, , 13F
這牽扯到AS3的基礎問題。
05/13 20:36, 13F

05/13 20:37, , 14F
照理說(未)存檔。所以其實沒有問題喔。
05/13 20:37, 14F

05/13 21:19, , 15F
的確是陣列的參照問題~~不過小弟半路出家,基礎不好.所以
05/13 21:19, 15F

05/13 21:19, , 16F
還真不知道這問題...
05/13 21:19, 16F

05/13 21:20, , 17F
想下載來玩玩看的,可於google play找僵屍大戰Lite
05/13 21:20, 17F

05/13 21:21, , 18F
不過用as3作遊戲好快呀~~~~
05/13 21:21, 18F

06/27 11:06, , 19F
另一款可找 魔王的寵物
06/27 11:06, 19F
文章代碼(AID): #1JSPweJa (Flash)
討論串 (同標題文章)
文章代碼(AID): #1JSPweJa (Flash)