Ir para conteúdo

POWERED BY:

Arquivado

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

hargon

[Resolvido] Como passar variável para função adicionada em botão

Recommended Posts

Boa tarde novamente pessoal,

 

Novo problema, prometo não voltar aqui hj depois dessa, só se for para ajudar hehe.

 

Mas é o seguinte, dentro de um movieClip criado por attachMovie, tenho um botão.

 

Estou criando eles dentro de um FOR, +- assim:

for(var cont:Number = 0; cont < 5; cont++){
	var bt = _root.attachMovie("botao","botao"+cont,100 + cont,{_x:newX,_y:newY});
	bt.btnpagina.onPress = function(){_global.pFrame = cont; _root.gotoAndPlay(2);};
	newX += 100;
}

A questão é, quando clicasse no botão, a variável _global.pFrame deveria receber o ID dele, que no caso acima é o valor de cont, que significa o momento em que ele foi criado. Só que do jeito que fiz, como está passando o valor para a variavel global, sempre o último valor de cont que fica gravado.

 

Tentei algo assim:

for(var cont:Number = 0; cont < 5; cont++){
	var bt = _root.attachMovie("botao","botao"+cont,100 + cont,{_x:newX,_y:newY});
	bt.btnpagina.onPress = function(){funcaoCont(cont)};
	newX += 100;
}

function funcaoCont(numero)
{
	_global.pFrame = numero; 
	_root.gotoAndPlay(2);
}
... mas não tive sucesso.

 

Resumindo, o que eu preciso fazer é criar 5 movieClip dinamicamente e dentro de cada um com um botão. Quando clicar em algum dos botões chamar uma função que vai passar um valor único, que identifique o botão, para uma variável global.

 

Isso que quero fazer é possível? Como seria?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse _global.pFrame foi declarado onde?????

 

Ele tem que ter sido declarado fora da função pra ter algum valor....

 

Mas se quiser passar um valor para press pode sempre fazer assim:

for(var cont:Number = 0; cont < 5; cont++){
	var bt = _root.attachMovie("botao","botao"+cont,100 + cont,{_x:newX,_y:newY});
	bt.btnpagina.onPress = function(){ 
		 _root.bt.btnpagina.valor = cont; 
		  _root.gotoAndPlay(2);
	};
	newX += 100;
}

Deu?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não deu. Esse _global.pFrame foi declarado no primeiro frame.

 

No caso não seria _root.bt.btnpagina.valor = cont;, teria que ser _global.pFrame = cont.

 

O que acontece é que _global.pFrame está ficando sempre com o último valor lido pelo FOR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou assim:

 

for(var cont:Number = 0; cont < 5; cont++){
	var bt = _root.attachMovie("botao","botao"+cont,100 + cont,{_x:newX,_y:newY});
		bt.cont = cont;
	bt.btnpagina.onPress = function(){funcaoCont(this.cont)};
	newX += 100;
}

function funcaoCont(numero)
{
	_global.pFrame = numero; 
	_root.gotoAndPlay(2);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, pois ele vai rodar o valor todo para a mesma variavel...

 

A variavel é a mesma sempre...

 

Se você declarar para cara um deles uma nova variavel... tavelz resolva

Mas qunado você declara 1 valor assim:

var tempo = 0
for(i=0;i<10;i++){
tempo = i;
}

100% das vezes vai dar tempo=10 no final....

 

é isso que você ta fazendo.

 

O unico jeito seria uma array O.o

Que ai você vai poder receber os valores separadamente...

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato. hehe O array já está criado e esse valor que quero pegar é justamente para acessar a posição do array referente ao Botão.

 

Como faço isso? Como consigo identificar essa posição ao clicar no botão.

 

Obrigado pela ajuda fi.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom para acessar dados no array é igual ao php

var tempo:Array = new Array();
for(i=0;i<10;i++){
tempo[i] = i;
}

Assim você diz que o valor 0=0 1=1 assim por diante

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até ai eu consegui. Mas não consigo é no momento do clique passar que eu cliquei no botão 2, então é para exibir o que está na posição 2, se eu clicar no botão 4, é para exibir o que está na posição 4... lembrando que o botão é criado dinamicamente, então a função é colocada no momento da criação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha hargon

Nesse link aqui

 

Eu faço isso que você quer mas usando duplicateMovie()

 

O código ta assim:

function onLoadInit(duplicate){
	redimensionar(duplicate, 50, 50)
	redimensionar(alvo, 300, 300);
	alvo._x = (Stage.width/2) - (alvo._width/2);
	alvo._y = (Stage.height/2) - (alvo._height/2);
	duplicate.onPress = function(){ 
		var string = targetPath(duplicate).split("-");
		p = string[1];
		p = p - 1;
		if(max >= 10){
			p = max+p;
		}
		var pic:String = fotos[p].toString();
		mcl.loadClip(pic, alvo);
	}
	loop++;
	inicia();
}

Como você pode ver eu pego o nome do clip no clic :P retiro o tracinho que eu acrescentei na hora de criar os clips e ai abro de acordo com ele...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... você é um gênio.

 

Eu pensei em fazer isso que você tá fazendo, mas não consegui rs. Você viu no outro tópico que meus botões estão em sequência. Eu tentei fazer um replace na palavra botao para ficar só os números. rs... Mas não tive sucesso. Nem lembrei do split. Vou tentar aqui e posto depois.

 

Mas aqui, como eu faço para que foi clicado no botão X e não no Y? Só usar targetPath(moviclip) resolve?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo o targetPath(moviclip) serve para lhe dizer qual o nome do clip que foi clicado ;)

 

Então se você der um trace nele ele vai retornar a instancia desse movieclip :P nome dele

 

Ai você pode com base nesse nome criar uma funçãozinha para poder pegar quem é ele e abrir um arquivo com base nisso :)

 

Eu tinha esquecido completamente disso... ai quando você falou o que queria eu lembrei da minha galeria que funcionava assim hehehe.

 

Não sei se é lá o melhor metodo para fazer isso... mas quando eu fiz só consegui inserir valores dinamicos a um botão assim :(

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você é o melhor. Deu certo.

 

Veja como ficou:

movieAdd.btnpagina.onPress = function(){funcaoCont(this);};
Fora do FOR criei a função:

function funcaoCont(numero):Void
{
	var divideArray;
	var numeroFinal;
	divideArray = targetPath(numero).split(".");
	numero = divideArray[1].split("botao");
	_global.pFrame = numero[1];
	_root.gotoAndPlay(2);
}

Abraço.

------------------------

Hargon, você viu o meu post?

 

Eu já tive um problema assim e resolvi daquele jeito.

Desculpa amigo, não havia visto seu post. Obrigado pela informação, mas acabei de testar aqui e não deu certo para este caso. Mas de toda forma obrigado.

 

Abraço.

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.