Ir para conteúdo

Arquivado

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

GabrielFerrari

Banners randomicos

Recommended Posts

Olá a todos aqui estou eu tentando criar mais um tutorial de flash

Vou tentar passar para vocês como criar um sistema banners randômicos

Vamos começar com o nosso temporizador

Crie um MovieClip vazio ctrl + f8 coloque o nome dele de tempo e arraste para o palco já que ele foi para a bibliotes.

Coloque o nome de instância de tempo e aperte f9 e coloque o seguinte código:

//Cria o tempo que ira trocar os banners
onClipEvent (load) {
var pausa = 2;
var tempo = getTimer();
}
onClipEvent (enterFrame) {
//Se quiser almentar ou diminuir o tempo troque o *2000 pelo numero que desejar.	
if (tempo+(pausa*2000)<=getTimer()) {
_root.MostraSwf()
var tempo = getTimer()
}
}
Agra crie outro MovieClip vazio com o nome de random e arraste para o palco

Instancie de recebeswf

Crie uma nova camada e no frame aperte f9 para abrir a janela de actions e coloque isso

//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..." */
lastRandom = -1;
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;

Agora é só criar os swfs e deixar tudo na mesma pasta.

 

O código está comentado então não vejo necessidade de explicar caso tenho alguma duvida é só postar.

 

 

http://rapidshare.com/files/130211321/Banners.rar.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. aqui nao deu certo nao

qdo eu vou testar o filme..

ele abre uma janelinha escrita "output" dai fica uma contagem

0

1

2

3

0

 

pq sera que ficou assim hein

:wacko:

 

qq eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bobmarley, confira se o seu Movie Clip "recebeswf" está bem posicionado.

 

Thelon:

 

Aqui funcionou muito bem. Melhor script que eu achei até agora.

Só estou tendo 2 problemas. Talvez você possa ajudar.

Primeiramente, a função "randomiza" não está funcionando corretamente.

Veja meu output:

5
4
2
9
6
8
0
4
1
5
10
2
9
9
9
10
4
7
1
9
5
10
8
10
8
6
7
9
0
10
10
8
8
10
7
7
2
2
11
3
11
9
10
2
2
8
9
1
0
0
10
11
9
11
11
11
3
8

Percebe que em 5 situações, houve repetição?

Na última, inclusive, foram 3 vezes seguidas.

 

Esse foi um dos problemas.

O outro problema é que como estou trabalhando com 12 banners, ha muitas chances de que alguns banners sejam visualizados menos que os outros. Obvio que aleatório significa aleatório e não ha nenhuma razão lógica para que um apareça mais do que o outro, mas o próprio output acima mostra que o banner 3, por exemplo, só foi exibido duas vezes. Já o 10 foi exibido nove vezes.

 

Existe alguma forma de que enquanto não exibir os doze (0 a 11) banners, não haja repetição?

 

Grande abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei editar e não consegui..

 

Descobri porque ele não está impedindo a repetição.

Como cada banner meu tem tempos diferentes, eu parei de usar o "tempo" e coloquei um _root.play(); ao final de cada banner.

Com isso, ele sempre reseta o valor do "lastRandom" e por isso acaba repetindo.

 

Para resolver, só precisei colocar a atribuição do "lastRandom" no primeiro frame e mudar o _root.play(); dos banners para _root.gotoAndPlay(2);

 

Ainda assim, só não consegui fazer com que não repita nenhum até finalizar todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo. Bom e o seguint eu sou meio lerdo com isso porem eu nao estou conseguindo bom meu banner 1 nao aparece todo pelo fato do tempo eu nao entendi o que você quiz dizer ai embaixo por favor se poder me ajudar o banner passar pra outro so quando acabar de passar. vlw.

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.