Ir para conteúdo

POWERED BY:

Arquivado

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

Gisa_iagami

erro em randomico

Recommended Posts

Galera eu randomizei seguindo o pessoal do forum umas perguntas em xml no meu flash. Agora as explicações tao saindo erradas para a pergunta

Segue meu codigo

No frame principal:

stop();//importa alertaimport mx.controls.Alert;//Importe a classe checkbox.var quiz:XML = new XML();//Essa propriedade ignora os espaços em branco do XML.quiz.ignoreWhite = true;//O método load recebe como argumento a url do arquivo que será carregadoquiz.load(arquivo_xml);certo = false;show = false;//Essa vai receber a quantidade de perguntas certasvar corretas:Number = 0;// Mostra a pergunta atual do quizvar perguntaAtual:Number = 0;//Variável que vai receber o checkBox que for marcado;var escolha;//Quantidade total de perguntas do quizvar totalPerguntas:Number;//array para pegar as perguntas q ele erra_global.minhasRespostasErradas = new Array([], [], [], [], [], [], [], [], [], []);//intervalo entre perguntas e respostas.var intervalo:Number;//intervalo de tempo.var tempo:Number = 0;//O evento onLoad da class Loadvars vai ser executado quando todos os//dados tiverem sido recebidos.quiz.onLoad = function(ok:Boolean):Void  {	   //Condicional if, para verificar se os dados foram recebidos com sucesso.	   if (ok) {			   //-----------montando array com as perguntas			   _root.ArrayQuiz = new Array();			   for (i=0; i<this.firstChild.childNodes.length; i++) {					   _root.ArrayQuiz.push(i);			   }			   //-----------			   _global.dados = quiz;			   _global.numDaPergunta = random(_root.ArrayQuiz.length);			   //Acesse e resgate a quantidade de nodes do XML, que é o valor da//quantidade de perguntas			   //totalPerguntas = this.firstChild.childNodes.length;			   totalPerguntas = 10;			   //Execute a função montaQuiz, que será criada logo mais abaixo, e//passe como argumento da função			   //O primeiro node do XML contendo a primeira pergunta;			   montaQuiz(this.firstChild.childNodes[_global.numDaPergunta]);			   limpaCampos();	   }};//Função montaQuiz, responsável por exibir a pergunta, e recebe como//argumento um node do XML para preencher os componentesfunction montaQuiz(xmlNodes) {	   //Aqui irei usar a propriedade text, do campo de texto qtd, para//exibir a quantidade de perguntas, e a pergunta atual	   qtd.text = ' '+parseInt(perguntaAtual+1)+" / "+totalPerguntas;	   //Exibe a pergunta no campo de texto	   perg.text = xmlNodes.childNodes[0].childNodes;	   _root.onEnterFrame = function() {			   tempo++;			   if (tempo == 25) {					   delete _root.onEnterFrame;					   tempo = 0;					   for (var i = 1, x = xmlNodes.childNodes.length; i<x; i++) {							   //Aqui ele deixa deselecionado todas as vezes que ele executar a função							   this['r'+i].visible = true;							   this['r'+i].selected = false;							   this['t'+i].text = xmlNodes.childNodes[i].childNodes;							   //theme do radiobutton							   this['r'+i].setStyle("themeColor", "cvmtheme");							   //this['r'+i].move(5, 100);							   //muda a fonte do radiobutton							   this['r'+i].setStyle("fontFamily", "verdana");							   //muda o tamanho da fonte							   this['r'+i].setStyle("fontSize", "11");							   //justifica o texto							   this['r'+i].setStyle("textAlign", "justify");							   //A propriedade data é a que iremos usar para saber qual é a//alternativa certa							   this['r'+i].data = xmlNodes.childNodes[i].attributes.certa;							   //o Evento clickHandler acontece quando você clica em qualquer dos//radiobuttons							   this['r'+i].clickHandler = function() {									   //A variável escolha recebe o valor de this, que corresponde ao//radiobutton clicado									   escolha = this;									  resp.fade(true,4,100,50);							   };							   barradotempo.play();					   }			   }	   };}/*Função resposta é responsável por verificar a resposta à pergunta doquiz. Se estiver correta, ele incrementa a variávelcorretas.*/function resposta(marcado):Void {	   //Se o checkbox passado tiver a propriedade data diferente de undefined	   if (marcado.data != undefined) {			   //Incremente a variável corretas.			   certo = true;			   corretas++;			   //mostra a pontuação atual.			   score.text = corretas;	   } else {			   for (var a = 0;a<_global.dados.childNodes[0].childNodes[0].childNodes.length; a++) {					   _global.minhasRespostasErradas[perguntaAtual].push(_global.dados.firstChild.childNodes[perguntaAtual].childNodes[a]);			   }	   }}//Função habilitaperguntas recebe como argumento da função um valor//booleano, que vai definir se as alternativas e o botão de responder vão ficar ativas ou nãofunction habilitaperguntas(v:Boolean):Void {	   //Loop for para setar a propriedade enabled dos componentes de checkbox, de acordo com o argumento recebido da função	   for (var i = 1; i<=4; i++) {			   eval('r'+i).enabled = v;	   }	   resp.enabled = v;}function mostraResultado() {	   //leva para o frame 12 mostrando o resultado final.	   gotoAndPlay(12);}resp.onPress = function() {if(!r1.selected && !r2.selected && !r3.selected) aviso.gotoAndPlay(2); else{	if (!show) {	   //define a resposta 	   resposta(escolha);		 //chama explicação		chamaexplicacao.play();		barradotempo.stop();		resp.fade(false, 0, 0, 0);	} }};//A função alertclik trata-se de um callback, que será executado//quando o botão na mensagem de alerta for clicadoresultado = function () {	   //Zerando a variável escolha	   escolha = '';	   if (perguntaAtual<totalPerguntas-1) {			   _global.dados.firstChild.childNodes[numDaPergunta].removeNode();			   i = 0;			   while (ArrayQuiz[i++] != numDaPergunta) {			   }			   _root.ArrayQuiz.splice(i-1, 1);			   //incrementando a variável perguntaAtual, para passar para a próxima pergunta;			   perguntaAtual++;			   //Executa a função montaQuiz, para exibir a pergunta de acordo com a//variável perguntaAtual			   montaQuiz(quiz.firstChild.childNodes[numDaPergunta=ArrayQuiz[random(_root.ArrayQuiz.length)]]);	   } else {			   //Executa a função mostraResultado.			   mostraResultado();	   }};/*fade = function () {   	  resp1._alpha = 50;};*/limpaCampos = function () {	   t1.text = " ";	   t2.text = " ";	   t3.text = " ";	   r1.selected = false;	   r2.selected = false;	   r3.selected = false;	   r1.visible = false;	   r2.visible = false;	   r3.visible = false;	   resp.fade(false, 0, 0, 0);	   };MovieClip.prototype.fade = function(ativo, acre, max, min) {this.onEnterFrame = function() {if (ativo == true) {this._alpha += nivel;if (this._alpha>=max) {nivel = -acre;}if (this._alpha<=min) {nivel = +acre;}}};};

No meu mc chama explicação

stop();var msg_certo = "CERTO!";var msg_errado = "RESPOSTA ERRADA OU TEMPO ESGOTADO";if (_parent.certo == true) {	som = new Sound(); 	som.attachSound("acerto");	som.start(0, 1);/*pega a resposta do XML */	 feedback.text = _parent._global.dados.childNodes[0].childNodes[_parent.perguntaAtual].childNodes[4].childNodes;	 conclusao.text = msg_certo;} else {	som = new Sound(); 	som.attachSound("erro");	som.start(0, 1);/* do contrario, mostra a mensagem de errado */	feedback.text = _parent._global.dados.childNodes[0].childNodes[_parent.perguntaAtual].childNodes[4].childNodes;	conclusao.text = msg_errado;};Button.prototype.fade = function (insta, ativo, acre, max, min) {	 function tt () {		   if (ativo == true) {				 insta._alpha += nivel;				 if (insta._alpha >= max) {					   nivel = -acre;				 }				 if (insta._alpha <= min) {					   nivel = +acre;				 }		   } else {				 clearInterval (intervalID);				 insta._alpha = 100;		   }	 }	 var intervalID:Number = setInterval (tt, 1);};proximo.fade (proximo, true, 1, 100, 0);

desespero total pois o cliente ta cobrando =/ help

Compartilhar este post


Link para o post
Compartilhar em outros sites

vi e revifiz um teste de trace nas variaveis perguntaAtual e numdaPergunta e elas tao com o mesmo valorindo de 0 a 9simplesmente nao acho o errosera q alguem poderia ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhe, posso até lhe ajudar se você disponibilizar o FLA em algum lugar pra eu fazer o download e fazer os testes, pois assim vendo só o código fica dificil, pois não sei como é a estrutura do seu FLA !!!AtecniosamenteEduardo Burko - PHANTOXE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gisa, estou olhando seu arquivo aqui já e estou analisando !!!Você poderia ser um pouco mais precisa em relação ao erro ?O que está acontecendo exatamente ? Como posso simular este erro ?AteniosamenteEduardo Burko - PHANTOXE

Compartilhar este post


Link para o post
Compartilhar em outros sites

eduardo, seria comparando com o xmlTipo, o xml q ta com você tem poucas perguntas q realmente tao preenchidas as explicaçõesmas se você jogar. Ira notar q quando a pessoa acerta ou erra. Ele chama a explicação e esta nao esta como no xml, esta randomizada e nao acompanha a pergunta certa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gisa, quando você tenta mostrar a variavel da explicação, ela tá pegando texto diferente da pergunta, pois como você utilizou a randomização das perguntas, a sua variavel perguntaAtual, sempre será diferente da explicação que tá no nó original _root.dados. Está havendo uma confusão entra a variavel perguntaAtual e a _global.numDaPergunta.È neste momento que o Flash pega a explicação errada ao invés de pegar a correta, ok ?Eu lhe aconselho a fazer de outras 2 formas, pra você não se perder nas perguntas.1º Você cria no XML um atributo chamado SORTEADO = 0; ai toda vez que ele for sorteado você muda este valor para 1, e na hora de mostrar a próxima pergunta, peça pro Flash mostrar a pergunta cuja o atributo é igual a 0, se for igual a 1, manda sortear de novo, ok ?2ºVocê pode toda vez que o Flash sortear uma pergunta e mostrar, remova este nós do XML com o REMOVENODE(), ai você nem precisa ficar verificando se aquela pergunta já foi sorteada ou não, pois ela não irá mais existir !!! Isso irá facilitar muito a sua vida !!! heheheBom, espero ter dado uma Luz para você, ok ?Meu Blog tá ficando quase pronto, assim que estiver pronto vou colocar um exemplo de Quiz em tua homenage, que achei bem bacana o seu sistema !!ParabénsSe precisar de mais algo ai é só dar um grito.Eduardo Burko

Compartilhar este post


Link para o post
Compartilhar em outros sites

Phantoxe valeu demais

Eu consegui mais foi trocando uma coisa ridiculamente facil

ficou assim a minha linha de feed:

feed = _global.dados.firstChild.childNodes[_global.numDaPergunta].childNodes[4].childNodes;

Apenas mudei onde era [childNodes[0] para firstChild o.o

Sei q testei e estava certinho

A esteja a vontade pra usar o sistema...Eu to pensando em fazer um tutorial mas nao manjo necas de flash. Esse ai foi feito na raça, nos conselhos e ajuda do forum

Estou a me matar no segundo agora...Mas é outro topico a criar

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.