[問題] function return Array的問題

看板Flash作者 (搬新家~無名881~^^)時間14年前 (2011/05/24 23:20), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
不好意思打擾了,我是寫actionscript的新手,問的問題可能很淺, 有先搜尋沒找到答案,還望先進們不吝指導…… 最近因為工作需要用flash做一款類似slot的遊戲,圖片是從外部load進來的 本來我把圖片名字取好,用for迴圈一張張讀進來,但前輩說希望我能另外建一份txt 用URLLoader把寫在上面的圖片檔名讀進來使用 因為一直出現錯誤,我發現我讀進來的文字雖然存進array裡,但我沒辦法把它傳出去 一開始我想在function外面宣一個array,然後把function裡處理好array的內容放過去 如下…… import flash.net.URLLoader; import flash.events.Event; import flash.net.URLRequest; var i:int=0;//計數器用 var a_loader:URLLoader=new URLLoader(); var newArray:Array=new Array();//用來把function內處理好的array存出來 a_loader.addEventListener(Event.COMPLETE,doComplete); //因為要偵聽是否load完,我不知道要把用來存return的array寫在哪裡…… function doComplete(e:Event):void{ var A_array:Array=a_loader.data.split(","); for (i=0;i<A_array.length;i++){ trace(i+":"+A_array[i]); }//用來測試有沒有全部讀進去 newArray=A_array.concat();//把處理好的內容存到function外的array裡 trace("infunction"+A_array[2]); trace("infunction"+newArray[3]); } trace("outfunction"+newArray[4]); //這裡的結果會顯示沒有這個資料…… var a_URL:URLRequest=new URLRequest("./picname.txt"); a_loader.load(a_URL); ----------------------------------------------------------------------------- 以上第一回合~"~ ----------------------------------------------------------------------------- 後來我找了一下想關資料,沒想到有這個問題的人很少,我真的很淺…… 不過我看到array複製存的是位置不是資料的討論,所以就照著網路上網友po的說明 用以下的方法存存看 import flash.net.URLLoader; import flash.events.Event; import flash.net.URLRequest; import flash.utils.ByteArray; var i:int=0; var a_loader:URLLoader=new URLLoader(); var newArray:Array=new Array(); a_loader.addEventListener(Event.COMPLETE,doComplete); function doComplete(e:Event):void{ var A_array:Array=a_loader.data.split(","); for (i=0;i<A_array.length;i++){ trace(i+":"+A_array[i]); } newArray=A_array.concat(); var setByteArray:ByteArray=new ByteArray(); setByteArray.writeObject(A_array); setByteArray.position=0; newArray=setByteArray.readObject(); trace("infunction"+A_array[2]); trace("infunction"+newArray[3]); } //trace("outfunction"+A_array[1]); var a_URL:URLRequest=new URLRequest("./picname.txt"); a_loader.load(a_URL); trace("outfunction"+newArray[3]); ------------------------------------------------------------------------------ 還是行不通…… ------------------------------------------------------------------------------ 自己找資料掙扎了好幾天,眼看馬上得把東西交出去了 希望能有前輩好心指一下 感謝m(_ _)m -- ▁ ▁▁ ▁▁ ▁▁▃▄▅▆▇███▇▄▃▁▁▁▁ ▁▁ ▁▁▂▄▆▇████████▇▆▅▃▃▂▂▁▁▁▁ ﹏﹏﹏﹏﹏ ●↗ KYO:讓我們向夕陽奔跑吧! ﹏﹏ BLUE:先輩我願追隨你! ● < 青春!熱血!感動! ︿ ∕ ﹥ 竹本真相組之 讓我們向真相奔跑吧!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.50.49.65

05/25 00:27, , 1F
關鍵點在於 你放在doComplete 外面的程式
05/25 00:27, 1F

05/25 00:27, , 2F
是比 function 內的程式先執行的
05/25 00:27, 2F

05/25 00:27, , 3F
但是在那個時間點 你的資料根本還沒載入
05/25 00:27, 3F

05/25 00:29, , 4F
你嘗試在載入資料完成前 就先讀陣列
05/25 00:29, 4F

05/25 00:29, , 5F
那當然是不行的
05/25 00:29, 5F

05/25 08:30, , 6F
所以最後資料其實有成功放進function外的array裡囉@@?
05/25 08:30, 6F

05/25 08:31, , 7F
謝謝你~那我由這個方向想辦法解決~感謝!!!!
05/25 08:31, 7F
文章代碼(AID): #1Dsyp6Xd (Flash)