Ir para conteúdo

POWERED BY:

Arquivado

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

MacRoger

[Resolvido] Componente Botão

Recommended Posts

prezados expert em Flash,

 

Peguei um componente (menu) para usa-lo no meu site e estou tendo problema para que o mesmo faça LoadMovie em um MovieClip (alvo) dos SWF's externos.

 

Veja aqui o componente para analise (esse componente é FREE) >>> Download do componente Clique aqui

 

Agradeço a todos que puderem me ajudar nesta tarefa.

 

Grato.

 

Roger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom sem alterar o código do mlk em muito

 

O que você pode fazer é na parte dos parametros do botões colocar o nome dos swf no lugar dos links

E ai dar um duplo clic sobre o componente para abrir o mesmo

 

E na parte de ActionScript

na linha 88:

getURL(links[this.i],"_blank");

 

Altere para

loadMovie(links[this.i], nome do movieClip que vai carregar o conteúdo);

 

Da pra fazer isso... se lhe interessar teste Imagem Postada

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá berseck,

 

Fiz exatamente isso que você falou e nada.

Segue abaixo a actionscript modificada por mim (tal como você disse)

 

//Função para eventos de ida e volta da animação (Movie Clip) - sem prototypes
function goFrame(mc):Void {
	//delete this.onEnterFrame;
	if (mc._currentframe<mc._totalframes) {
		mc.onEnterFrame = function() {
			mc.nextFrame();
			if (mc._currentframe == mc._totalframes) {
				delete mc.onEnterFrame;
			}
		};
	}
}
function backFrame(mc):Void {
	delete mc.onEnterFrame;
	mc.onEnterFrame = function() {
		mc.prevFrame();
		if (mc._currentframe == 1) {
			delete mc.onEnterFrame;
		}
	};
}
//////////////////////////////////////////////////////////////////////////////////
//travamento deste frame como _root para a multiplicação de MovieClips
this._lockroot = true;
//contar quantidades de menus que estão no componente
qtd = menu.length;
//função de botão pressionado - os demais voltam ao estado normal
function fcn() {
	for (i=0; i<menu.length; i++) {
		if (i != selecionado) {
			_root['b'+i].enabled = true;
			_root['b'+i].useHandCursor = true;
			backFrame(_root['b'+i]);
		}
	}
}
//multiplicação dos botões pelo for (meu preferido hehe)
for (i=0; i<qtd; i++) {
	//duplicando botões
	botao.duplicateMovieClip('b'+i,_root.getNextHighestDepth());
	//dou o nome de b para os botões multiplicados
	b = _root['b'+i];
	//sempre tenho que fazer isso para transformar os botoes em arrays
	b.i = i;
	//defino a distancia de cada um deles
	b._y += i*64;
	//essa parte é gerada automaticamente o numero dos botões que aparece
	b.numero.texto.text = "0"+(this.i+1);
	b.numero2.texto.text = "0"+(this.i+1);
	//aqui eu declaro o titulo dos botões
	b.titulo.texto.text = menu[this.i];
	b.titulo2.texto.text = menu[this.i];
	//aqui eu declaro a descrição deles
	b.desc.texto.text = descricao[this.i];
	var my_color:Color = new Color(b.mcBg.mcG);
	my_color.setRGB(cor);
	// my_mc turns red
	//b.mcBg.mcG.setRGB("0x" + cor);
	_global.selecionado = 0;
	goFrame(_root['b'+0]);
	_root['b'+0].enabled = false;
	_root['b'+0].useHandCursor = false;
	//quando se passa o mouse em um deles acontece
	b.onRollOver = function() {
		/*o goFrame foi a função que eu criei para dar o Play no botão, 
		a diferença é que ele de onde estiver passa a seguir o próximo frame 
		e no meu ponto de vista isso é melhor por que não uso tanta memória 
		e nem preciso ficar me matando pra entender aqueles prototypes*/
		goFrame(this);
	};
	b.onRollOut = function() {
		/*o backFrame foi a outra função que eu criei para voltar a animação de onde
		ela estiver para o primeiro frame e la limpar a função da memória para não
		deixar o filme puxar muitos recursos do pc, a diferença é que a partir do frame
		que ela estiver ela volta*/
		backFrame(this);
	};
	b.onRelease = function() {
		_global.selecionado = this.i;
		this.enabled = false;
		this.useHandCursor = false;
		fcn();
		loadMovie(links[this.i],alvo);

	};
	unloadMovie(botao);
}

Quando eu coloco desta forma (_root.loadMovie(links[this.i],alvo); ) ele chama o SWF mas não vai para o MovieClip (vazio) alvo. Ele faz o LoadMovie mas não tira o anterior e fica por cima do outro.

 

Te agradeço a atenção, se puder me dar mais força nisso agradeço.

Não sou tão expert em flash para tal problema.

 

Roger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

????

 

Não entendi??

Ele se você mandar 2 loadMovie em 1 MovieClip ele vai sempre substituir 1 pelo outro.

 

Tente fazer _root.alvo pois como você ta dentro do botão... ele não ta acessando o root.

Talvez isso resolva seu problema.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ai o que fiz, mas não deu certo, help me!!!!

//Função para eventos de ida e volta da animação (Movie Clip) - sem prototypes
function goFrame(mc):Void {
	//delete this.onEnterFrame;
	if (mc._currentframe<mc._totalframes) {
		mc.onEnterFrame = function() {
			mc.nextFrame();
			if (mc._currentframe == mc._totalframes) {
				delete mc.onEnterFrame;
			}
		};
	}
}
function backFrame(mc):Void {
	delete mc.onEnterFrame;
	mc.onEnterFrame = function() {
		mc.prevFrame();
		if (mc._currentframe == 1) {
			delete mc.onEnterFrame;
		}
	};
}
//////////////////////////////////////////////////////////////////////////////////
//travamento deste frame como _root para a multiplicação de MovieClips
this._lockroot = true;
//contar quantidades de menus que estão no componente
qtd = menu.length;
//função de botão pressionado - os demais voltam ao estado normal
function fcn() {
	for (i=0; i<menu.length; i++) {
		if (i != selecionado) {
			_root['b'+i].enabled = true;
			_root['b'+i].useHandCursor = true;
			backFrame(_root['b'+i]);
		}
	}
}
//multiplicação dos botões pelo for (meu preferido hehe)
for (i=0; i<qtd; i++) {
	//duplicando botões
	botao.duplicateMovieClip('b'+i,_root.getNextHighestDepth());
	//dou o nome de b para os botões multiplicados
	b = _root['b'+i];
	//sempre tenho que fazer isso para transformar os botoes em arrays
	b.i = i;
	//defino a distancia de cada um deles
	b._y += i*64;
	//essa parte é gerada automaticamente o numero dos botões que aparece
	b.numero.texto.text = "0"+(this.i+1);
	b.numero2.texto.text = "0"+(this.i+1);
	//aqui eu declaro o titulo dos botões
	b.titulo.texto.text = menu[this.i];
	b.titulo2.texto.text = menu[this.i];
	//aqui eu declaro a descrição deles
	b.desc.texto.text = descricao[this.i];
	var my_color:Color = new Color(b.mcBg.mcG);
	my_color.setRGB(cor);
	// my_mc turns red
	//b.mcBg.mcG.setRGB("0x" + cor);
	_global.selecionado = 0;
	goFrame(_root['b'+0]);
	_root['b'+0].enabled = false;
	_root['b'+0].useHandCursor = false;
	//quando se passa o mouse em um deles acontece
	b.onRollOver = function() {
		/*o goFrame foi a função que eu criei para dar o Play no botão, 
		a diferença é que ele de onde estiver passa a seguir o próximo frame 
		e no meu ponto de vista isso é melhor por que não uso tanta memória 
		e nem preciso ficar me matando pra entender aqueles prototypes*/
		goFrame(this);
	};
	b.onRollOut = function() {
		/*o backFrame foi a outra função que eu criei para voltar a animação de onde
		ela estiver para o primeiro frame e la limpar a função da memória para não
		deixar o filme puxar muitos recursos do pc, a diferença é que a partir do frame
		que ela estiver ela volta*/
		backFrame(this);
	};
	b.onRelease = function() {
		_global.selecionado = this.i;
		this.enabled = false;
		this.useHandCursor = false;
		fcn();
		_root.alvo.loadMovie(links[this.i]);

	};
	unloadMovie(botao);
}

 

berseck você fez o download do componente para ver como ele funciona?

Acima nos posts tem o link para download.

 

Preciso usar este componente, mas teria outra forma de fazer ele funcionar?

 

Grato.

 

Roger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok fiz um POG aqui porque o flash tava com preguiça e eu tbm...

 

Flash principal que carrega os botões:

var alvo:MovieClip = _root.createEmptyMovieClip("alvo", 1);
var botoes:MovieClip = _root.createEmptyMovieClip("botoes", 2);

//Aqui transformo o MC numa variavel global a ser acessada de qualquer lugar
_global.mc = alvo;

alvo._x = 250;
alvo.loadMovie("houses/public_html/images/2page-img1.jpg");
botoes._x = 0;
botoes._y = 0;

botoes.loadMovie("botoes.swf");

E no action dos botões:

b.onRelease = function() {
		_global.selecionado = this.i;
		this.enabled = false;
		this.useHandCursor = false;
		fcn();
		loadMovie(links[this.i], _global.mc);
	};

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia! berseck,

 

Legal este script, mas sou um pouco leigo em actionscript. o que vem a ser POG?

 

Funcionou legal...

 

Agora é o seguinte:

 

O MovieClip (vazio) ALVO que coloquei no stage principal terei que deletar, pois no seu script você cria um ALVO, certo?

Agora vem outra pendega, quando testo o filme principal ele já tem que fazer o LoadMovie do HOME no alvo que seu script cria...

...como fazer esta actionscrit para inseri-la no frame do filme principal?

Quando se testa o filme o menu (componente) já vem com o botão HOME ativado, ai tem que carregar o SWF HOME externo automático.

 

Obrigado pela sua atenção, mais uma vez...

 

Roger.

 

Prezado berseck...

 

no seu script onde tem:

 

alvo.loadMovie("houses/public_html/images/2page-img1.jpg");

 

Fiz da seguinte forma, coloquei o HOME.swf

 

alvo.loadMovie("home.swf");

 

Carregou de primeira, agora quando se testa o filme já carrega o HOME e o botão do menu já esta ativado...beleza!

 

 

 

RESOLVIDO, FUNCIONOU TUDO CERTINHO :joia: :joia:

 

Você foi a luz no fundo do tunél...

Fico muito grato à atenção dada a mim.

Caso venha precisar de design feito em photoshop estou aqui para o que quiser, OK!

 

Valew!

 

Roger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu botei algo pra carregar ali porque era teste...

Não que tu tivesse aquele arquivo rs Imagem Postada

 

Como sempre meu código é só um exemplo de como deve ser feito Imagem Postada

 

Que bom que conseguiu.

 

Abraços

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.