as3 参数不能为空

我想做一个数组排序的程序,具体为输入数字然后给数组进行排序但会出现TypeError:Error#2007:参数text不能为空。atflash.text::TextFi... 我想做一个数组排序的程序,具体为输入数字然后给数组进行排序 但会出现
TypeError: Error #2007: 参数 text 不能为空。
at flash.text::TextField/set text()
at fl.controls::TextInput/set text()
at _fla::MainTimeline/n1()
这个问题

因为是自学的有些地方不是很通 希望大神解答= =
代码如下:
var myArr:Array=new Array();
myArr[1]=Number(box1.text);
myArr[2]=Number(box2.text);
myArr[3]=Number(box3.text);
myArr[4]=Number(box4.text);
myArr[5]=Number(box5.text);

b1.addEventListener(MouseEvent.MOUSE_DOWN,n1);
function n1(e:MouseEvent) {
myArr.sortOn(Array.NUMERIC|Array.DESCENDING);
this.box1.text=myArr[1];
this.box2.text=myArr[2];
this.box3.text=myArr[3];
this.box4.text=myArr[4];
this.box5.text=myArr[5];
}

b2.addEventListener(MouseEvent.MOUSE_DOWN,n2);
function n2(e:MouseEvent) {

myArr.sortOn(Array.NUMERIC|Array.NUMERIC);
box1.text=myArr[1];
box2.text=myArr[2];
box3.text=myArr[3];
box4.text=myArr[4];
box5.text=myArr[5];

}

b3.addEventListener(MouseEvent.MOUSE_DOWN,n3);
function n3(e:MouseEvent) {

myArr.sortOn(Array.NUMERIC|Array.DESCENDING);
box1.text=myArr[1];
box2.text=myArr[2];
box3.text=myArr[3];
box4.text=myArr[4];
box5.text=myArr[5];
}

主场景 输入框依次向下为box1,2,3,4,5
button依次为 b1,b2,b3
展开
 我来答
lsjaker4
2013-11-15 · TA获得超过289个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:598万
展开全部
你这段代码,粗略的看了下,有好几个问题,
1:第一个问题,也就是你纠结的地方,你的myArr 数组在初始化的时候出错,如果你场景中的这五个输入文本没有初始值,是五个白色的空文本,那么myArr数组就是空数组。而当你点击按纽的时候却要读取它的固定索引,肯定会报 不能为空这个错误。 解决方法有两种,一种是给它添加初始值,另一种是给你的初始化数组添加EVENT侦听。
2:数组索引是从0开始的,估计还要出现不能为空的报错。
3: sortOn() 是多维数组排序用的,你应该用sort()
4:幸亏你只有五个文本,如果有50个文本,你是不是要1到50写一大排呀。记住,使用for循环,来控制这种。
中智咨询
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。... 点击进入详情页
本回答由中智咨询提供
南国孤叶
2013-11-15 · TA获得超过244个赞
知道小有建树答主
回答量:343
采纳率:0%
帮助的人:188万
展开全部
1.var myArr:Array=new Array();
myArr[1]=Number(box1.text);......
因为box1.text是没有值的,是undefined。所以myArr[1] == undefined。所以this.box1.text=myArr[1];会报错。
2.数组要从0开始,所有的语言都是从0开始的。
3.不要在时间轴用this。容易发生指代错误。
4.代码冗余。

var myArr:Array=new Array();
for(var i:int = 0;i<5;i++){
myArr[i] = Number(root["box"+int(i+1)].text)
}

b1.addEventListener(MouseEvent.MOUSE_DOWN,n1);
function n1(e:MouseEvent) {
myArr.sortOn(Array.NUMERIC|Array.DESCENDING);
setText();
}

b2.addEventListener(MouseEvent.MOUSE_DOWN,n2);
function n2(e:MouseEvent) {
myArr.sortOn(Array.NUMERIC|Array.NUMERIC);
setText();
}

b3.addEventListener(MouseEvent.MOUSE_DOWN,n3);
function n3(e:MouseEvent) {
myArr.sortOn(Array.NUMERIC|Array.DESCENDING);
setText();
}

function setText(){
for(var i in myArr){
root["box"+int(i+1)].text = myArr[i]+"";
}
}
可以修改成这样。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7588b36
2013-11-17 · TA获得超过2278个赞
知道大有可为答主
回答量:5095
采纳率:40%
帮助的人:1347万
展开全部
TextField/set 这个类的属性 text 实例化时给他赋值就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式