Ir para conteúdo

POWERED BY:

Arquivado

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

Dhio

Sequência do Banner

Recommended Posts

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.