数组结果显示" undefined"以随机的方式

时间:2014-10-17 07:14:35

标签: arrays random actionscript-2

我有一个问题,一个数组显示所需的值,以随机方式未定义,我创建一个随机生日生成器,并且我已经测试了大部分时间我得到了预期的结果,但有时候我得到了未定义的

我在舞台上有3个动态文本字段,这是我的代码:

var mesArray:Array = new Array(

"janeiro",
"fevereiro",
"março",
"abril",
"maio",
"junho",
"julho",
"agosto",
"setembro",
"outubro",
"novembro",
"dezembro"
);


mes_txt.text = mesArray[Math.round(Math.random() *12)];

function randRange(min:Number, max:Number):Number {
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
for (var a = 0; a < 1; a++) {
var b:Number = randRange(1940, 1997)
ano_txt.text = b;
}


if(mes_txt.text == "fevereiro")
{

for (var c = 0; c < 1; c++) {
var d:Number = randRange(1, 29)
dia_txt.text = d;

}


function randRange2(min2:Number, max2:Number):Number {
var randomNum2:Number = Math.floor(Math.random() * (max2 - min2 + 1)) + min2;
return randomNum2;
}

}else if(mes_txt.text == "abril")
{

for (var e = 0; e < 1; e++) {
var f:Number = randRange3(1, 30)
dia_txt.text = f;

}

function randRange3(min3:Number, max3:Number):Number {
var randomNum3:Number = Math.floor(Math.random() * (max3 - min3 + 1)) + min3;
return randomNum3;
}


}else if(mes_txt.text == "junho")
{
for (var g = 0; g < 1; g++) {
var h:Number = randRange4(1, 30)
dia_txt.text = h;

}
function randRange4(min4:Number, max4:Number):Number {
var randomNum4:Number = Math.floor(Math.random() * (max4 - min4 + 1)) + min4;
return randomNum4;
}


}else if(mes_txt.text == "setembro")
{
for (var i = 0; i < 1; i++) {
var j:Number = randRange5(1, 30)
dia_txt.text = j;

}

function randRange5(min5:Number, max5:Number):Number {
var randomNum5:Number = Math.floor(Math.random() * (max5 - min5 + 1)) + min5;
return randomNum5;
}



}else if(mes_txt.text == "novembro")
{
for (var k = 0; k < 1; k++) {
var l:Number = randRange6(1, 30)
dia_txt.text = l;

}

function randRange6(min6:Number, max6:Number):Number {
var randomNum6:Number = Math.floor(Math.random() * (max6 - min6 + 1)) + min6;
return randomNum6;
}

}else{
    for (var m = 0; m < 1; m++) {
var n:Number = randRange(1, 31)
dia_txt.text = n;


}
    function randRange7(min7:Number, max7:Number):Number {
var randomNum7:Number = Math.floor(Math.random() * (max7 - min7 + 1)) + min7;
return randomNum7;
}

}

2 个答案:

答案 0 :(得分:0)

您不需要多次编写相同的函数,也不需要使用循环。您的代码可以更简单:

var mesArray:Array = new Array('janeiro', 'fevereiro', 'março', 'abril', 'maio',
                               'junho', 'julho', 'agosto', 'setembro', 'outubro',
                               'novembro', 'dezembro');
/**
 * returns an integer between min and max
 */
function randRange(min:int, max:int):int {
    return min + Math.round(Math.random() * (max - min));
}

// ano
var a:int = randRange(1940, 1997);
ano_txt.text = String(a);

// mes
var m:int = randRange(0, 11); 
mes_txt.text = String(mesArray[m]);

// dia
var dmax:int = (m == 3 || m == 5 || m == 8 || m == 10) ? 30 : 31;
if (m == 1) dmax = 29; // feb
var d:int = randRange(1, dmax);
dia_txt.text = String(d);

注意:对于2月份的特定情况,您应该编写一个考虑闰年的代码!

编辑:

if (m == 1) dmax = ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) ? 29 : 28;

答案 1 :(得分:0)

所以这里是最终解决方案以及闰年功能和小时和分钟生成器,我将在艺术装置中使用它,谢谢你问候解决方案。

var mesArray:Array = new Array('janeiro', 'fevereiro', 'março', 'abril',  'maio','junho','julho','agosto','setembro','outubro','novembro', 'dezembro');

/**returns an interger between min and max **/
function randRange(min:Number, max:Number):Number 
{
return min + Math.round(Math.random() * (max - min));
}

// mes
var m:Number = randRange(0, 11); 
mes_txt.text = String(mesArray[m]);

// dia
var dmax:Number = (m == 3 || m == 5 || m == 8 || m == 10) ? 30 : 31;
var b:Number 
if (m == 1) dmax = 29; 

// feb
var d:Number = randRange(1, dmax);
dia_txt.text = String(d);

// ano
var a:Number = randRange(1940, 1997);
ano_txt.text = String(a);
if(((ano_txt.text % 4 == 0)&&(ano_txt.text % 100 != 0))||(ano_txt.text % 400 ==0)) 

{ 
(dmax == 29) 
bissexto_txt.text = "ano bissexto";
}
else
{
(dmax == 28)
}

// hora
var h:Number = randRange(1, 24);
hora_txt.text = string(h)
if (h<10) hora_txt.text = "0" + h 

// minuto
var mt:Number = randRange(0, 59);
minuto_txt.text = string(mt)
if (mt<10) minuto_txt.text = "0" + mt