as3 字符串 数组作为参数传递的问题

今天被一个问题难住了。vara:Array=newArray(6);然后通过循环每个a[i]中存放的是一个文件目录F:/abc/abc.txt,因此a[i]是String... 今天被一个问题难住了。
var a:Array=new Array(6);
然后通过循环每个a[i]中存放的是一个文件目录F:/abc/abc.txt,因此a[i]是String类型。此时问题来了,在a函数中调用b函数,同时通过for语句将a[i]作为函数参数传递,在b函数中再trace传递过来的a[i]的值,测试影片时,总是报#1010 术语未定义的错误,求解?
代码简要如下:
var a:Array=new Array(6)
for(var i:int=0;i<6;i++){
赋值……均为文件路径
}
function abc(){
一堆语句………(省略)
for(var j:int=0;j<6;j++){
//trace(a[i]);//此处正常输出
//调用函数
defe(a[i]);
}
…………
}

function defe(s:String){
trace(s);//这里输出报错
……
}

为什么?求解
展开
 我来答
alanbabbage
2013-12-20 · TA获得超过977个赞
知道小有建树答主
回答量:755
采纳率:0%
帮助的人:1146万
展开全部
因为

function abc(){一堆语句………(省略)for(var j:int=0;j<6;j++){//trace(a[i]);//此处正常输出//调用函数defe(a[i]);}

中的i应该为j。i是个全局变量,故在abc中也能访问,但由于数组初始化赋值后,i的值为7,而数组的长度是6,故在abc函数中,读取到的值a[i]=a[7]=undefined,在传到函数defe后,就变成null值了

不过,你的报错并不是句“trace(s);”导致,而是因为其他引到s为null或是a[i]为undefined时,才报错的。
gjsgdhr
2013-12-22 · TA获得超过1800个赞
知道小有建树答主
回答量:665
采纳率:77%
帮助的人:466万
展开全部

我解释下:

这句代码var a:Array=new Array(6)

会生成一个数组,数组中只有一个元素就是6...

而不是生成了一个长度为6的数组...

正确的代码应该这么写:

//无需传递参数,直接声明
var a:Array=new Array()
//给a数组添加元素,这里按你说的添加6个元素
for(var i:int=0;i<6;i++)
{
    //使用push添加元素,xxx就是你要添加的文件路径之类的
    //当然你可以用之前的方法直接进行赋值,但是,建议还是用push
    a.push(xxx);
}

function abc()
{
    //一堆语句………(省略)
    //用a.length表示,这样可以减少出错的风险,因为不一定长度就是6
    for(var j:int=0;j<a.length;j++)
    {
        //因为循环变量是j,所以用a[j]
        //trace(a[j]);//此处正常输出
        //调用函数
        defe(a[j]);
    }
    …………
}

function defe(s:String)
{
    trace(s);//看看有木有报错?
    ……
}

希望能帮到你

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
由雅娴郎仁
2019-10-10 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:35%
帮助的人:827万
展开全部
直接用赋值语句就行了。例如数组名称为:myarray,将"hello"字符串保存到指定位置:
myarray[2]
=
"hello";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式