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 展开
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 展开
3个回答
展开全部
你这段代码,粗略的看了下,有好几个问题,
1:第一个问题,也就是你纠结的地方,你的myArr 数组在初始化的时候出错,如果你场景中的这五个输入文本没有初始值,是五个白色的空文本,那么myArr数组就是空数组。而当你点击按纽的时候却要读取它的固定索引,肯定会报 不能为空这个错误。 解决方法有两种,一种是给它添加初始值,另一种是给你的初始化数组添加EVENT侦听。
2:数组索引是从0开始的,估计还要出现不能为空的报错。
3: sortOn() 是多维数组排序用的,你应该用sort()
4:幸亏你只有五个文本,如果有50个文本,你是不是要1到50写一大排呀。记住,使用for循环,来控制这种。
1:第一个问题,也就是你纠结的地方,你的myArr 数组在初始化的时候出错,如果你场景中的这五个输入文本没有初始值,是五个白色的空文本,那么myArr数组就是空数组。而当你点击按纽的时候却要读取它的固定索引,肯定会报 不能为空这个错误。 解决方法有两种,一种是给它添加初始值,另一种是给你的初始化数组添加EVENT侦听。
2:数组索引是从0开始的,估计还要出现不能为空的报错。
3: sortOn() 是多维数组排序用的,你应该用sort()
4:幸亏你只有五个文本,如果有50个文本,你是不是要1到50写一大排呀。记住,使用for循环,来控制这种。
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
展开全部
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]+"";
}
}
可以修改成这样。
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]+"";
}
}
可以修改成这样。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TextField/set 这个类的属性 text 实例化时给他赋值就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询