Gisa_iagami 0 Denunciar post Postado Outubro 6, 2006 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
Gisa_iagami 0 Denunciar post Postado Outubro 9, 2006 ninguem? please Compartilhar este post Link para o post Compartilhar em outros sites
Gisa_iagami 0 Denunciar post Postado Outubro 9, 2006 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
Phantoxe 0 Denunciar post Postado Outubro 9, 2006 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_iagami 0 Denunciar post Postado Outubro 9, 2006 www.beitlevi.com.br/quizz.rarobrigada :) Compartilhar este post Link para o post Compartilhar em outros sites
Phantoxe 0 Denunciar post Postado Outubro 9, 2006 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
Gisa_iagami 0 Denunciar post Postado Outubro 9, 2006 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
Phantoxe 0 Denunciar post Postado Outubro 9, 2006 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
Gisa_iagami 0 Denunciar post Postado Outubro 10, 2006 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