Ir para conteúdo

POWERED BY:

Arquivado

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

yetiH

Setar functions similares para vários Mc´s ou Bt´s

Recommended Posts

Olá galera, eu não sei nem como procurar isso aqui no fórum pra ver se já existe.

 

Eu já tentei vários jeito e não consigo, queria ver se é possível; exemplo:

 

Tenho vários movie clips, instancio todos eles, e coloco os seus nomes em um array

 

var movies:Array = Array(mc1,mc2,mc3);

assim, eu posso fazer por exemplo um for deixando todos eles invisível:

 

for(var i:Number = 0; i < movies.lenght; i++)	movies[i]._visible = false;

o que eu gostaria de fazer, é basicamente isso, só que ao invés de setar uma propriedade, eu gostaria de setar uma função para os movies....

 

for(var i:Number = 0; i < movies.lenght; i++){	movies[i].onPress = function(){			//faz alguma ação	}}//isso não funciona

bom, eu não consigo fazer isso, e seria MUITO útil!

alguém tem idéia?

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria funcionar sim! Ao invés de '//faz alguma ação' tente colocar um 'trace("oi");' para testar...

 

Mas se mesmo assim não der (não sei porque) tente:

 

var movies:Array = Array(mc1, mc2);for (var i = 0; i < movies.length; i++) {	var movie:MovieClip = movies[i];	movie.onPress = function(){		trace("oi");	}}

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, perae. Isso funciona com certeza:

 

var movies:Array = Array(mc1, mc2, mc3);for (var i:Number = 0; i < movies.length; i++) {	movies[i].onPress = function() {		trace(this);	};}
Dá uma olhada, você escreveu lenght ao invés de length. Já fiz isso, hehe.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

var movies:Array = Array(mc1, mc2, mc3);for (var i:Number = 0; i < movies.length; i++) {	movies[i].onPress = function() {		trace(this);	};}
Com certeza isto funciona, mas se você quiser usar o valor de i referente aquele bt, não funciona!

Para tal você deve fazer o i se transformar em um atributo daquele mc/bt... assim por exemplo:

 

var movies:Array = Array(mc1, mc2, mc3);for (var i:Number = 0; i < movies.length; i++) {	movies[i].i = i;	movies[i].onPress = function() {		trace(this);	};}
Assim o atributo i do movies é igual ao proprio i no momento em q a action foi atribuida ao movies.

 

Pense nas etapas do for q fica mais facil:

movie[1].i = 1;

movie[2].i = 2;

.... e assim por diante!

 

Espero ter ajudado!!1

 

Abraços galera!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu que viagem, realmente agora eu consegui!E eu digitei o length errado aqui, porque criei esse código aqui na hora..Eu tenho outros for´s funcionando até... só que aplicando outros parâmetros.. não onPress, e esse não funcionava!Meu que viagem! Não entendi agora o que eu poderia estar fazendo errado!Vlw aí, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, agora me pintou outro problema!

 

Eu tenho o Array com os movies, e preciso também, do mesmo nome desses movies, mas como String.

O único jeito que achei, foi fazer dois Arrays, um com os movies, e outro respectivamente com as Strings, fica assim:

var movies:Array = Array(mc1, mc2, mc3);var moviesLab:Array = Array("mc1", "mc2", "mc3");for (var i:Number = 0; i < movies.length; i++) {	movies[i].onPress = function() {		trace(moviesLab[i]);	};}
Isso não funciona, percebi que o i não vai por ordem, não fica 0, 1, 2, sempre vai ficar 3... que já é o estouro do for...

porquê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

var movies:Array = Array(mc1, mc2, mc3);for (var i:Number = 0; i < movies.length; i++) {	movies[i].onPress = function() {		trace(this);	};}
Com certeza isto funciona, mas se você quiser usar o valor de i referente aquele bt, não funciona!

Para tal você deve fazer o i se transformar em um atributo daquele mc/bt... assim por exemplo:

 

var movies:Array = Array(mc1, mc2, mc3);for (var i:Number = 0; i < movies.length; i++) {	movies[i].i = i;	movies[i].onPress = function() {		trace(this);	};}
Assim o atributo i do movies é igual ao proprio i no momento em q a action foi atribuida ao movies.

 

Pense nas etapas do for q fica mais facil:

movie[1].i = 1;

movie[2].i = 2;

.... e assim por diante!

 

Espero ter ajudado!!1

 

Abraços galera!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm.. desculpe minha falta de atenção!Eu realmente não tinha entendido o que você tinha falado ali..Mas agora tudo esclarecido. PERFEITO!Obrigadão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Bom o "Antoniosp" me indicou este topico, mas eu num entendi muito bem, quando você coloca um cara que só desenha pra programar, já viu, suadeira pra fazer um tantim...

 

Do jeito que está funciona, mas queria otimizar o código.

Bom oq eu queria na verdade é a partir de um botão ele acionar funções em diversos outros MC,s como por exemplo

 

//ao largar o botão "btn_mudacor1" acionar a funçãobtn_mudacor1.onRelease = function() {//aê é que tá o drama... dá pra simplificar pra num precisar repetir a mesma coisa em cada MC_root.button1.bg.colorTo(0x333333, 0.5, "linear");_root.button2.bg.colorTo(0x333333, 0.5, "linear");_root.button3.bg.colorTo(0x333333, 0.5, "linear");_root.button4.bg.colorTo(0x333333, 0.5, "linear");_root.button5.bg.colorTo(0x333333, 0.5, "linear");_root.changer.colorTo(0x000000, 0.5, "linear");_root.bgbg02.colorTo(0x000000, 0.5, "linear");_root.bg01.bg.colorTo(0x333333, 0.5, "linear");}

Repare que o MC em questão pode estar dentro de outro MC instanciado, como é o caso dos "button's" dentro do MC instanciado como "bg".

 

OBS: eu num conheço bem o FOR, será que dá pra ler os MCs dentro de uma Array sem precisar do FOR... ou só com ele?

 

Mais uma duvida... o tal Prototype tem algo a ver com isso que to querendo fazer?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala maninho,

 

Seguinte cara... pra fazer isso, pelo menos dentro dos meus conhecimentos, você tem sim q consiliar Array com o For!! Vo tentar detalhar td aih em baixo:

 

//Aqui crio uma nova Array var moviesAlvo:Array = new Array();//Atribuo os valores da array. moviesAlvo = [_root.button1.bg,_root.button2.bg,_root.button3.bg,_root.button4.bg,_root.button5.bg,_root.changer,_root.bgbg02,_root.bg01.bg];//Lembrando q arrays iniciam-se em 0, ou seja, para chamar o primeiro item(_root.button1.bg) através da array seria assim: moviesAlvo[0] btn_mudacor1.onRelease = function() {	//i=0=> inicia o for com i(variavel utilizada como índice) igual a zero;	//i<moviesAlvo.length => se i menor q a quantidade de itens em moviesAlvo 	//i++ => acresse 1 à variavel i 	for(i=0; i<moviesAlvo.length; i++) {		//se i for igual a 5 ou se i for igual a 6, que sao os indices da array 		//referentes aos mcs cuja cor é diferente dos demais		if(i == 5 || i == 6) {			//atribui esta cor aos mcs			moviesAlvo[i].colorTo(0x000000, 0.5, "linear");		//Caso i nao seja um dos valores acima		}else {			//atribui esta cor aos mcs			moviesAlvo[i].colorTo(0x333333, 0.5, "linear");		}	}}

Ta aih... qqr duvida da um grito!!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraços!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha Mário, vou fazer o exemplo bobinho pra que você entenda o lance do FOR. Aí comparando com os outros exemplos você tenta fazer o seu (hauhuea, telecurso agora)

 

O FOR é um laço de repetição que executa várias vezes o código que está entre as chaves dele.

 

//para i = 1; executar sempre que i for menor ou igual a 5; aumentar o i quando for executar o AS de novofor(var i:Number = 1; i<=5; i++){//experimente isso:trace(i);}var agonia:Array = Array(_root.button1, _root.bg01);for(var i:Number = 0; i<agonia.length; i++){//agora experimente isso:trace(agonia[i]);//e issoagonia[i].onRollOver = function(){//quando passar o mouse no button1 e no bg01 vai aparecer no output:trace("você rolou sobre o "+this);}}

Acho que deu pra abrir os horizontes, certo?

 

Abraço http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

 

edit:

legal, o léo estava postando junto comigo... mas de qq forma está aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif valeu pessoal, valeu mesmo!

Eu sei que o tópico num é pra avaliação mas deêm uma olhadinha em como tá ficando o tal site que muda de cor, tô aprendendo AS com ele, com ele deixei de usar ações direto nos botões pra usar as ações todas na timeline e é bem como o Antonio colocou aê, abrindo horizontes... mas por enquanto ainda tem muita névoa por aki...

 

meu site muda cor

 

Obrigado e abraço a todos!

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.