Dhio 0 Denunciar post Postado Março 18, 2008 Olá Pessoal. Estou com problema peguei até um código aqui, que faz um flash com um sequência e tem botões, ficou otimo, se não fosse por uma coisa só, ele randomiza. Eu queria que ele seguisse pela seguência númerica, ou quer dizer 1,2,3,4 depois 1,2,3,4 e assim por diante e não que faça um sorteio entre esses números. Alguém sabe alterar esse código para que faça uma sequência númerica: //Cria as matrizes var swfs:Array = new Array(); cores[0] = "banner1"; cores[1] = "banner2"; cores[2] = "banner3"; cores[3] = "banner4"; /*Evita que um banner seja repetido em seguida No caso ele chama uma função que tem nome de "randomiza" Antes de tudo, tem uma variavel que se chama lastRandom = -1; ela seria o último número randomizado. Na função, ele faz o primeiro random.. dae ele faz um loop while, que diz "enquanto o número random for igual ao último número randomizado, tenta randomizar de novo..." */ function randomiza(numMax) { numRandom = random(numMax); while (lastRandom == numRandom) { numRandom = random(numMax); } lastRandom = numRandom; return numRandom; } //Função que cria o random. function MostraSwf() { i = randomiza(4); trace(i); if (i == 0) { loadMovie("banner1.swf", "recebeswf"); } else if (i == 1) { loadMovie("banner2.swf", "recebeswf"); } else if (i == 2) { loadMovie("banner3.swf", "recebeswf"); } else if (i == 3) { loadMovie("banner4.swf", "recebeswf"); } } MostraSwf(); stop(); //Função dos botões btn1.onPress = function() { loadMovie("banner1.swf", "recebeswf"); }; btn2.onPress = function() { loadMovie("banner2.swf", "recebeswf"); }; btn3.onPress = function() { loadMovie("banner3.swf", "recebeswf"); }; btn4.onPress = function() { loadMovie("banner4.swf", "recebeswf"); }; //Posiciona o movieclip vazio recebeswf._x = 100; recebeswf._y = 150; Só preciso dessa mãozinha, agradeço muito quem for ajudar. Os botões e etc está tudo certo a única coisa que não quero é sorteio e sim um sequência como disse. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Março 18, 2008 Tente este aqui: //Cria as matrizes // Não apaguei aqui porque nã osei se você usa para algo var swfs:Array = new Array(); cores[0] = "banner1"; cores[1] = "banner2"; cores[2] = "banner3"; cores[3] = "banner4"; // stop(); // Da as ações aos 4 botões var tot_bots:Number = 4; while(tot_bots --){ var bt: MovieClip = eval("btn" + (tot_bots + 1)); bt.i = ("banner" + tot_bots + ".swf"); bt.onPress = function(){ loadMovie(this.i, "recebes.swf"); } } // posiciona recebeswf._x = 100; recebeswf._y = 150; Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Março 18, 2008 Ops mal, faltou a fnção de avançar: //Cria as matrizes // Não apaguei aqui porque nã osei se você usa para algo var swfs:Array = new Array(); cores[0] = "banner1"; cores[1] = "banner2"; cores[2] = "banner3"; cores[3] = "banner4"; // stop(); // Da as ações aos 4 botões var tot_bots:Number = 4; while(tot_bots --){ var bt: MovieClip = eval("btn" + (tot_bots + 1)); bt.i = ("banner" + tot_bots + ".swf"); bt.onPress = function(){ loadMovie(this.i, "recebes.swf"); } } // cria a sequencia de loadmovies _global.davez = 0; function MostraSwf() { swf = "banner" + ((davez % 4) + 1) + ".swf"; loadMovie(swf, "recebeswf"); _global.davez ++; } //inicia a função com intervalos de 1 segundo setInterval(MostraSwf, 1000); // posiciona recebeswf._x = 100; recebeswf._y = 150; Compartilhar este post Link para o post Compartilhar em outros sites
Dhio 0 Denunciar post Postado Março 18, 2008 Opa obrigado, mais ainda tou tendo uns probleminhas. Modifiquei o código: //Cria as matrizes // Não apaguei aqui porque nã osei se você usa para algo var swfs:Array = new Array(); cores[0] = "banner1"; cores[1] = "banner2"; cores[2] = "banner3"; cores[3] = "banner4"; // stop(); // Da as ações aos 4 botões btn1.onPress = function() { loadMovie("banner1.swf", "recebeswf"); }; btn2.onPress = function() { loadMovie("banner2.swf", "recebeswf"); }; btn3.onPress = function() { loadMovie("banner3.swf", "recebeswf"); }; btn4.onPress = function() { loadMovie("banner4.swf", "recebeswf"); }; // cria a sequencia de loadmovies _global.davez = 0; function MostraSwf() { swf = "banner" + ((davez % 4) + 1) + ".swf"; loadMovie(swf, "recebeswf"); _global.davez ++; } //inicia a função com intervalos de 1 segundo setInterval(MostraSwf, 7000); // posiciona recebeswf._x = 100; recebeswf._y = 150; Se for ver modifiquei o código dos botões pelo antigo, pois os botões não estavam funcionando e alterei para 7000. Mais como disse tem um problema, quando você clica faz de conta no botão 3 e ele ta indo em ordem númerica, ele ignora a clicada no botão. Ou quer dizer em vez de ele ir para o 4, vai para o 1, também não expressei muito sobre isso. E tem uma coisa estranha, as vezes em um numero ele vai rapido demais, por exemplo ele demora 7 segundos no 1, no 2 e no 3 ele demora 1 segundo ou menos, achei estranho isso. Se der por favor par ajudar ou saber, gostaria muito, obrigado. E desculpa o incomodo. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Março 18, 2008 Então, no caso eu só fiz a função que pediu e com intervalo pequeno para você ter uma noção de como continuar, o que você precisa fazer é criar um id pro seu intervalo, e tomar cuidado para ele não duplicar, senão ele vai chamar a mesma função em tempos diferentes, pois ele cria dois intervalos de 7 segundos ou mais até, pra isso use o clearInterval, por exemplo: clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); sempre siga essa ordem de parar o intervalo antes de fazer um novo, pois se nã otiver o intervalo em andamento, o clear tambem não vai prejudicar. Para resolver o problema da sequencia depois de clicar, você vai ter que mudar a variavel davez, então no botão faça assim: btn1.onPress = function() { _global.davez = 1; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); }; btn2.onPress = function() { _global.davez = 2; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); }; e assim por diante, testa ai e qquer coisa você posta novamente. abraço, Carneirinho Compartilhar este post Link para o post Compartilhar em outros sites
Dhio 0 Denunciar post Postado Março 19, 2008 Nossa, realmente obrigado, resolveu o caso de apertar no botão e ele continuar onde apertou. O único problema que restou foi ainda que as vezes alguns números vão rapido demais, as vezes é o 3 que vai rápido, outras o 4, depois o 2 e etc. Mesmo deixando 7000. As vezes vão rápido apertando no botão por exemplo no 2, ae ele vai direitinho no 3 no tempo exato, depois o 3 vai tudo certinho e o 4 vai rápido. E uma outra coisa tem como o 1 já aparecer na hora, mais demorar para passar para o próximo número? Por que o banner vai ficar em branco nesse tempo que ele não tiver, o bom seria ele já aparecer quando banner abrir, em poucos segundos até ou pelo menos não demorar muito, eu tentei colocar 2 nele mais não foi. //Cria as matrizes // Não apaguei aqui porque nã osei se você usa para algo var swfs:Array = new Array(); cores[0] = "banner1"; cores[1] = "banner2"; cores[2] = "banner3"; cores[3] = "banner4"; // stop(); // Da as ações aos 4 botões btn1.onPress = function() { loadMovie("banner1.swf", "recebeswf"); _global.davez = 1; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 2000); }; btn2.onPress = function() { loadMovie("banner2.swf", "recebeswf"); _global.davez = 2; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); }; btn3.onPress = function() { loadMovie("banner3.swf", "recebeswf"); _global.davez = 3; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); }; btn4.onPress = function() { loadMovie("banner4.swf", "recebeswf"); _global.davez = 4; clearInterval(_global.intervalo); _global.intervalo = setInterval(MostraSwf, 7000); }; // cria a sequencia de loadmovies _global.davez = 0; function MostraSwf() { swf = "banner" + ((davez % 4) + 1) + ".swf"; loadMovie(swf, "recebeswf"); _global.davez ++; } // posiciona recebeswf._x = 100; recebeswf._y = 150; Mais muito obrigado mesmo, ta me ajudando muito mesmo. Realmente está retirando um peso em mim. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Março 19, 2008 O que eu acho que está acontecendo é o seguinte, você manda ele carregar o swf, só que ele leva um tempo para carregar esse swf, então se por exemplo ele demora 4 segundos pra carregar ou até mais, ele acaba encurtando esses 7 segundos, o certo mesmo é você parar o intervalo, depois chamar o swf e fazer uma função de preloader para que somente depois de carregado o swf ele mostra o swf e após isso ele chama denovo a função depois de 7 segundos, deu pra entender a lógica? Compartilhar este post Link para o post Compartilhar em outros sites
Dhio 0 Denunciar post Postado Março 19, 2008 Bem a lógica eu entendi, o dificil seria passar essa lógica para o código. To começando agora no flash, por mais que já tive experiências e entenda um pouco de lógica e código, mais eu não tenho tanta experiência e ainda tenho bastante dúvida. Se poder por favor me ajudar nisso em código, te agradeceria muito por isso, preciso muito disso. Mesmo assim realmente você já me ajudou bastante uns 80% do flash já está pronto praticamente, realmente obrigado. Compartilhar este post Link para o post Compartilhar em outros sites