Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bastardo

sorteio de data com AS2

Recommended Posts

Olá povo, milianos que não posto por aqui, resolvi retomar um projeto de AS2 que eu usei no meu tcc, sou artista plástico e estou fazendo uma instalação interativa que tem entre outras coisas um gerador de data.

O script gera um ano que vai de 1940 a 1997 (imaginando uma pessoa viva e trabalhando) e um gerador de dias e meses.

 

A dificuldade é com os meses casarem com os dias corretos que contém, ia ser um fiasco por exemplo, gerar um 31 de fevereiro, portanto tive que fazer uma função que consegue delimitar quais dias cada mes pode ser sorteado.

 

O código parece funcionar até onde eu consegui testar, mas vez em quando o campo mes aparece como undefined e eu não consegui rastrear o problema, eu imagino que a minha solução é pobre e que eu devia usar as3, mas eu realmente não quero recomeçar tudo.

 

Ok, tenho 3 dynamic text no palco (mes_txt, ano_txt, dia_txt) e meu código é esse:

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 i = 0; i < 1; i++) {
    var n:Number = randRange(1940, 1997)
    ano_txt.text = n;
}


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

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 29)
    dia_txt.text = n;
		
	}
	
}else if(mes_txt.text == "abril")
{

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 30)
    dia_txt.text = n;
		
	}
	
	}else if(mes_txt.text == "junho")
{

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 30)
    dia_txt.text = n;
		
	}
	
	}else if(mes_txt.text == "setembro")
{

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 30)
    dia_txt.text = n;
		
	}
	
	
	}else if(mes_txt.text == "novembro")
{

function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 30)
    dia_txt.text = n;
		
	}
	
}else{
		
		function randRange(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}
for (var i = 0; i < 1; i++) {
    var n:Number = randRange(1, 31)
    dia_txt.text = n;
		
		
	}
}

fico muito grato com qq ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está errado. Seu array possui um intervalo de 0 a 11 e não de 0 a 12. Por isso o erro...

 

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

 

 

Logo, o correto para o seu caso seria:

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

 

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.