kazuh 0 Denunciar post Postado Setembro 16, 2007 Olá! estou quebrando a cabeça há alguns dias e não consegui! alguém sabe como fazer?? Eu tenho 5 SWF's 1.swf; 2.swf, 3.swf, 4.swf e 5.swf que são chamados pelo menu.swf Eu gostaria que cada vez que menu.swf fosse carregado, fosse sorteado uma sequência diferente, ex.: 2.swf; 5.swf; 3.swf; 4.swf; 1.swf e eles precisam ser executados um após o termino do outro. tem como fazer isso?? Obrigado desde já, Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 16, 2007 Olhem como estou fazendo... no menu.swf coloquei 50 frames no primeiro frame, coloquei este AS: numeros = [a="10", b="20", c="30", d="40", e="50"];randomicos = new Array(1);for (var j = 0; j<randomicos.length; j++) { var diferente = true; var valor = Math.floor(Math.random()*numeros.length); for (var k = 0; k<randomicos.length; k++) { if (randomicos[k] == numeros[valor]) { diferente = false; j--; } } if (diferente) { randomicos[j] = numeros[valor]; }}gotoAndStop(randomicos); no FRAME 10 coloquei loadMovie("1.swf", "target");stop();no FRAME 20 coloquei loadMovie("2.swf", "target");stop();no FRAME 30 coloquei loadMovie("3.swf", "target");stop();no FRAME 40 coloquei loadMovie("4.swf", "target");stop();e no FRAME 50 coloquei loadMovie("5.swf", "target");stop(); No final de cada um dos swf's externos (1.swf, 2.swf, 3.swf, 4.swf e 5.swf) coloquei: numeros = [a="10", b="20", c="30", d="40", e="50"];randomicos = new Array(1);for (var j = 0; j<randomicos.length; j++) { var diferente = true; var valor = Math.floor(Math.random()*numeros.length); for (var k = 0; k<randomicos.length; k++) { if (randomicos[k] == numeros[valor]) { diferente = false; j--; } } if (diferente) { randomicos[j] = numeros[valor]; }}_root.gotoAndStop(randomicos);Sendo que tirei da variável numeros o valor do swf corrente.ex: no SWF 1.swf o é numeros = [b=20", c="30", d="40", e="50]; no SWF 2.swf o é numeros = [a=10", c="30", d="40", e="50]; e assim por diante! só que o que acontece... Eu não consigo garantir uma sequência sem repetição... alguém me ajuda a pensarrrrr... tem solução?? Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 17, 2007 Estou pensando assim... se numeros = [a=10", b="20", c="30", d="40", e="50]; ficasse no _root. no menu.swf e cada vez que o swf externo correspondente fosse excutado, o numeros fosse atualizado? exemplo: o 1.swf foi executado, no final da ação, o numeros fosse atualizado pra: numeros = [b=20", c="30", d="40", e="50]; o 3.swf executa e atualiza o numeros pra: numeros = [b=20", d="40", e="50]; etc... alguém, tem uma luz como se podeeria fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Setembro 17, 2007 No menu.swf: ACTIONSCRIPT //Iniciando variáveisvar n_swfs:Number = 5; var sorteados:Array = new Array(); //Função que irá sortear um novo swf e carregar function sortearSwf() { //Sorteando um novo número enquanto ele for repetido do { var n:Number = Math.ceil(Math.random() * n_swfs); } while (sorteados.possui(n)); //Se forem sorteados todos os números, que recomeçe a contagem if (sorteados.push(n) == n_swfs) { sorteados.splice(0); } //Carregando o swf sorteado loadMovie(n + ".swf", "target"); } //Função que pergunta para a Array se ela possui algum valor Array.prototype.possui = function(valor) { for (var i in this) { if (this[i] == valor) { return true; } } return false; }; //Chamando o primeiro swf sortearSwf(); Deixe esse código no frame 1 mesmo. E no final de cada swf carregado apenas coloque: ACTIONSCRIPT this._parent.sortearSwf(); Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Setembro 17, 2007 tenta fazer assim ACTIONSCRIPT // essa função sorteia uma sequencia não repetida _root.RamdonUnique = function(quantos, limite) { limite = Number(limite); quantos = Number(quantos); limite = !(Number(limite)) || Number(limite) < Number(quantos) ? quantos : limite; if (Number(quantos)) { var numero; var i; var k; var matriz = []; matriz[0] = Math.floor(Math.random()*limite); for (i=1; matriz.length < quantos; i++) { numero = Math.floor(Math.random()*limite); for (k=0; k < matriz.length; k++) { if (numero == matriz[k]) { numero = Math.floor(Math.random()*limite); k = -1; } } matriz[i] = numero; } return matriz; } else { return false; } }; var numeros = ["1.swf", "2.swf", "3.swf", "4.swf", "5.swf"]; var randomicos = RamdonUnique(5,4); var i=0 _global.carregaProximo=function(){ loadMovie([numeros[randomicos[i]], "target"]); i++ } _global.carregaProximo() e no final de cada swf você coloca essa linha para chamar a função de carregamento ACTIONSCRIPT _global.carregaProximo() Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 17, 2007 Valeu feras! os scripts funcionaram direitinho, perfeito! Precisava só de uma adaptação: O sorteio precisaria ser realizada apenas uma vez. ex: carregamos o menu.swf, e foi sorteado a seguinte sequência: 1.swf, 3.swf, 5.swf, 4.swf, 2.swf essa sequência seria executada até o menu.swf fosse recarregado novamente (F5) sendo sorteado nova sequência Ai complica?? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Setembro 18, 2007 o código que eu postei ja faz isso..... Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 18, 2007 Eder, deu um erro, veja o Output: **Error** Scene=Scene 1, layer=Layer 6, frame=1:Line 32: Wrong number of parameters; loadMovie requires between 2 and 3. loadMovie([numeros[randomicos], "target"]); Total ActionScript Errors: 1 Reported Errors: 1 Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Setembro 18, 2007 Ah... o meu também faz.. :( E o do Eder fica assim: loadMovie(numeros[randomicos], "target"); Falou Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 19, 2007 Eder, em teu script, depois de executada a sequencia sorteada, no final da 5ª animação, ele dá undefined, será q estou montando errado? ============================================================ Antonio, quando o menu.swf é carregado, ele faz um sorteio e escolhe uma sequência, ex. sorteou : 1.swf, 3.swf, 4.swf, 2.swf, 5.swf no final da execução dessa sequencia, ou seja, depois do 5.swf ele já faz um novo sorteio, e escolhe uma nova sequencia... eu gostaria que fosse executada a mesma sequencia: 1.swf, 3.swf, 4.swf, 2.swf, 5.swf ou seja o sorteio é feita apenas uma vez. o teu script faz isso? será que estou montando errado? obrigado mais um vez pela atenção!! =] Compartilhar este post Link para o post Compartilhar em outros sites
Antoniosp 2 Denunciar post Postado Setembro 19, 2007 A ta... não sorteia de novo... ACTIONSCRIPT //Iniciando variáveisvar n_swfs:Number = 5; var sorteados:Array = new Array(); //Função que pergunta para a Array se ela possui algum valor Array.prototype.possui = function(valor) { for (var i in this) { if (this[i] == valor) { return true; } } return false; }; //Criando uma sequência sorteada var swf_atual:Number = n_swfs; while (swf_atual--) { do { var n:Number = Math.ceil(Math.random() * n_swfs); } while (sorteados.possui(n)); sorteados.push(n); } //Função que irá sortear um novo swf e carregar function sortearSwf() { //Passando para o próximo swf_atual == n_swfs - 1 ? swf_atual = 0 : swf_atual++; //Carregando o swf sorteado loadMovie(sorteados[swf_atual] + ".swf", "target"); } //Chamando o primeiro swf sortearSwf(); Abraço Compartilhar este post Link para o post Compartilhar em outros sites
kazuh 0 Denunciar post Postado Setembro 21, 2007 Antonio, show de bola! funcionou direitinho.valeu fera! Compartilhar este post Link para o post Compartilhar em outros sites