Bastardo 0 Denunciar post Postado Outubro 17, 2014 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
DesenvolvedorRoger 50 Denunciar post Postado Outubro 20, 2014 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