作者bluenicole (搬新家~无名881~^^)
看板Flash
标题[问题] function return Array的问题
时间Tue May 24 23:20:22 2011
不好意思打扰了,我是写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
1F:推 etrexetrex:关键点在於 你放在doComplete 外面的程式 05/25 00:27
2F:→ etrexetrex:是比 function 内的程式先执行的 05/25 00:27
3F:→ etrexetrex:但是在那个时间点 你的资料根本还没载入 05/25 00:27
4F:→ etrexetrex:你尝试在载入资料完成前 就先读阵列 05/25 00:29
5F:→ etrexetrex:那当然是不行的 05/25 00:29
6F:→ bluenicole:所以最後资料其实有成功放进function外的array里罗@@? 05/25 08:30
7F:→ bluenicole:谢谢你~那我由这个方向想办法解决~感谢!!!! 05/25 08:31