..:: MX Studio Fóruns ::..: Controle de timeline-frames AS2 [RESOLVIDO] - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Controle de timeline-frames AS2 [RESOLVIDO] Animação com flash.

#1 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 23 September 2011 - 11:46 AM

Fala galera bele?

Bom estou precisando muito de ajuda;
É o seguinte preciso criar a seguinte animação ou efeito no flash (action 2.0).

1° Na stage tenho varios botoes com instancia (textura 1 / textuta 2 / textura 3, etc);
2° Tambem tenho varios objetos como movieclip com instancia (obt1 /obj2 / obj3, etc).
Dentro da timeline de cada movieclip criei duas layer um AS outra PUXA, na layer puxa existe o MCCLIP com instancia puxa já na layer AS cada frame esta com o seguinte cod...
Frame1= puxa.loadMovie("text.jpg");
Frame2= puxa.loadMovie("text1.jpg");
Frame3= puxa.loadMovie("text2.jpg");
Bom vamos a ajuda que preciso
Cada vez que eu clicar no botão textura1 e depois clicar no obj1 mostra o loadmovie do frame1, si clicar na textura2 e em qualquer um dos objetos mostra oque esta no loadmovie do frame dois, ou seja, ao clicar no btn textura e depois em algum objeto vai para o frame que puxa a textura referente a escolha feita nos botoes texturas, mas isso troca apenas do objeto que foi clicado deixando os demais sem alterar.
Galera não sei se deu para entender mas estou precisando muito desta ajuda, sei que se eu tiver varios objetos vai dar um trabalhão mais ja pesquisei um monte e esta forma ja vai me ajudar muito.
Abraços...
0

#2 User is offline   RONYTORRES 

  • Group: Moderadores
  • Posts: 385
  • Joined: 07-December 06

Posted 29 September 2011 - 09:49 AM

Se eu entendi corretamente, deve ser isso que você precisa.

var frame:Number; //variável para armazenar o id do btn clicado

for (i = i; i<4; i++) {
	_root["textura"+i].id = i; //guarda o valor de i, na propriedade id do btn
	_root["textura"+i].onRelease = function() {
		frame = this.id;//a variável frame armazena o valor da propriedade id do btn clicado.
	}
	_root["obj"+i].onRelease = function() {
		this.gotoAndStop(frame);//vai para o frame, de acordo com o valor da variavel frame.
	}
}

0

#3 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 29 September 2011 - 11:57 AM

Eu outra vez Roney.

Bom testei este cod e nao certo não fez nada, sera que eu estou fazendo algo de errado?
Fiz o seguinte, criei uma nova layer e inseri o cod e nada aconteu, tambem conferi se a instancia dos btn e obj estavem corretas e nao deu msm...
0

#4 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 29 September 2011 - 12:58 PM

Baseado no que o Rony fez. Tente assim:

Pra esse exemplo:
1. No stage tem 3 texturas com instâncias: textura1, textura2, textura3.
2. No stage tem 3 objetos que "receberão texturas", com instâncias: obj1, obj2, obj3.
Cada "objeto" tem 3 frames, em cada frame terá uma textura diferente.

3. Aplique o código no 1º frame:
/**********************
* VARIVEIS - configura por aqui
**********************/

var frame:Number = 1;			//variável para armazenar o id do btn clicado, por padrão pega a 1º textura
var totalDeTexturas:Number = 3;		//total de texturas
var totalDeObjetos:Number = 3;		//total de objetos que receberão tetxuras
var nomeTextura:String = "textura";	//nome de instancia dos btns textura. ex: textura1, textura2, textura3....
var nomeObjeto:String = "obj";		//nome de instancia dos objetos btns. ex: obj1, obj2, obj3...


iniciaTudoAqui();


function iniciaTudoAqui():Void
{
	configuraTexturas();
	configuraObjetos();
}


//controla as texturas que ao serem clicadas armazena qual frame(textura) de um objeto clicado deve ser trocado
function configuraTexturas():Void
{
	//aplica evento de clique para total de texturas no stage
	for (var i:Number=1; i<=totalDeTexturas; ++i)
	{
		//textura btns
		var t:MovieClip = _root[nomeTextura+i];
		t.id = i; //guarda o valor de i, na propriedade id do btn
		t.onRelease = function()
		{
			frame = this.id; //a variável frame armazena o valor da propriedade id do btn clicado.
			trace("* Escolheu textura id "+ this.id);
		}
	}
}


//controla os objetos btns que receberão a tetxura escolhida
function configuraObjetos():Void
{
	//aplica evento de clique para total de objetos no stage
	for (var i:Number=1; i<=totalDeObjetos; ++i)
	{
		//objetos btns
		var obj:MovieClip = _root[nomeObjeto+i];
		obj.gotoAndStop(frame); //vai para na textura padrão(numero da variavel frame)
		obj.onRelease = function()
		{
			/*vai para o frame, de acordo com o valor da variavel frame.
			sempre que a textura for clicada, essa variavel mudará.
			Obs: Não existe frame 0. Se nenhuma textura for clicada,
			por padrão vai poara o frame 1 de texturas*/
			this.gotoAndStop(frame);
			trace(this._name +" recebeu textura "+ frame);
		}
	}
}


Arquivo CS4:
http://www.mediafire...ek13i211xpxbzbl

Abraço.
0

#5 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 29 September 2011 - 03:37 PM

Rodrigo muito obrigado pela ajuda.
Gostaria de tirar mais uma duvida que na verdade é o que eu preciso mais.
Os objetos podem vir de loadMovie?
Como colocar os objetos dentro de um movie clip, ou seja, os objetos estarão dentro de um movieclip pai e dentro de varios movieclip filho, ou seja, mcpai.mcfilho.mcfilho.obj1.Seria possivel fazer isso?


Abraço...
0

#6 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 02 October 2011 - 12:23 AM

Um lógica seria essa:
1º carrega todos objetos, depois de todos carregados,... continua
2º configura botões de texturas
3º configura os botões de objetos(arquivos externos carregados anteriormente)

Por isso separei em funções pra cada coisa, pra facilitar perceber qual o caminho que o código percorre.

Utilize a classe MovieClipLoader no lugar do loadmovie, assim, você consegue controlar melhor as coisas com eventos. Pra saber por exemplo, "quando o objeto foi carregado", ou fazer um preloader etc.
Na net você acha vários tutorais de como e porque usar MovieClipLoader:
http://imasters.com.br/artigo/3593


Passos:
1- Peguei cada movieclip objetos que tinha sua texturas e criei um arquivo Flash pra cada um.
Nesse arquivo tem apenas 3 frames com cada textura do suposto objeto. do mesmo modo que foi feito o movieclip no arquivo anterior.

2- Depois, gerei um arquivo swf de cada objeto ficando com nomes: obj1.swf, obj2.swf e obj3.swf. Estes arquivos serão carregados e controlados pelo arquivo principal.

3- Carreguei eles em cada "movieclip alvo" que estão no arquivo principal com nomes de instâncias: obj1, obj2, obj3.


Novo código no arquivo principal ficou assim:
/**********************
* VARIVEIS - configura por aqui
**********************/

var frame:Number = 1;			//variável para armazenar o id do btn clicado, por padrão pega a 1º textura
var totalDeTexturas:Number = 3;		//total de texturas
var totalDeObjetos:Number = 3;		//total de objetos que receberão tetxuras
var nomeTextura:String = "textura";	//nome de instancia dos btns textura. ex: textura1, textura2, textura3....
var nomeObjeto:String = "obj";		//nome de instancia dos objetos btns. ex: obj1, obj2, obj3...
var mcl:MovieClipLoader = new MovieClipLoader(); //usado para carregar arquivo externo
var contadorObjetos:Number = 0;		//será usado pra contar quantos foram carregados


iniciaTudoAqui();


/***********************
 * EVENTS
 **********************/


//Evento do movieClipLoader - onLoadInit
//quando objeto for carregado por completo e iniciado no stage, executa essa função...
this.onLoadInit = function(target:MovieClip):Void
{
	contadorObjetos++; //soma contador
	
	//só pode usar os objetos quando todos forem carregados
	if(contadorObjetos >= totalDeObjetos)
	{
		trace(contadorObjetos +" objetos foram carregados!");
		
		configuraTexturas();
		configuraObjetos();
	}
}



/***********************
 * FUNCTIONS
 **********************/
 
function iniciaTudoAqui():Void
{
	mcl.addListener(this); //adiciona ouvinte dos eventos da classe MovieClipLoader pra saber quando foi carregado objetos
	carregaObjetos(); //1º carrega objetos
}


function carregaObjetos():Void
{
	trace("* 1º começa carregar todos os objetos.");
	
	//carrego a quantidade de objetos
	for(var i:Number=1; i<=totalDeObjetos; ++i)
	{
		var obj:MovieClip = _root[nomeObjeto+i]; //nome do mc alvo que vai receber o objeto externo
		var url:String = "obj"+i+".swf"; //nome o arquivo: ex: obj1.swf, obj2.swf, obj3.swf...
		mcl.loadClip(url, obj); //carrega o objeto externo no alvo
	}
}



//controla as texturas que ao serem clicadas armazena qual frame(textura) de um objeto clicado deve ser trocado
function configuraTexturas():Void
{
	trace("* 2º configura as texturas.");
	
	//aplica evento de clique para total de texturas no stage
	for (var i:Number=1; i<=totalDeTexturas; ++i)
	{
		//textura btns
		var t:MovieClip = _root[nomeTextura+i];
		t.id = i; //guarda o valor de i, na propriedade id do btn
		t.onRelease = function()
		{
			frame = this.id;	//a variável frame armazena o valor da propriedade id do btn clicado.
			trace("* Escolheu textura id "+ this.id);
		}
	}
}


//controla os objetos btns que receberão a tetxura escolhida
function configuraObjetos():Void
{
	trace("* 3º configura os objetos.");
	
	//aplica evento de clique para total de objetos no stage
	for (var i:Number=1; i<=totalDeObjetos; ++i)
	{
		//objetos btns
		var obj:MovieClip = _root[nomeObjeto+i];
		obj.gotoAndStop(frame); //para na textura padrão(frame 1)
		obj.onRelease = function()
		{
			/*vai para o frame, de acordo com o valor da variavel frame.
			sempre que a textura for clicada, essa variavel mudará
			Obs: Não existe frame 0. Se nenhuma textura for clicada,
			por padrão vai poara o frame 1 de texturas*/
			this.gotoAndStop(frame);
			trace(this._name +" recebeu textura "+ frame);
		}
	}
}


Arquivo CS4:
http://www.mediafire...sh3akk1ibxesyh9

Abraço.
0

#7 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 05 October 2011 - 02:57 PM

Valeu Rodrigo, vou testar e logo dou retorno se deu certo...

Abraços
0

#8 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 07 October 2011 - 10:10 AM

Fala Rodrigo tranquilo?

Bom fiz os teste e era isso msm jque eu precisava, porem gostaria de saber como colocar os objetos dentro de um movieclip, ou seja, esta da seguinte forma obj1.swf, obj2.swf e obj3.swf, dentro de cada obj tem tres frames que corespondem a cada textura, então eu gostaria de colocar estas texturas dentro de um movieclip ficando obj.swf/texturas/frames 1,2,3,etc.
Seria possivel?

Abraços e valeu mesmo...

Junior
0

#9 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 10 October 2011 - 03:19 PM

Em cada obj.swf, basta criar o mc e inserir os frames com as texturas, e dá um nome de instâncias(ex: texturas) pra esse mc ser controlado pelo swf principal:

Antes, com os frames estando direto na timeline principal de cada obj.swf, o acesso até os frames de cada obj.swf estava assim:
pedaço do código na função configuraObjetos() no arquivo prinicpal
obj.gotoAndStop(frame); //acesso a timeline principal do arquivo obj.swf


Agora, com movieclip texturas o acesso seria:
obj.texturas.gotoAndStop(frame);  //acesso a timeline do mc tetxuras


Atualiza a função configuraObjetos():
//controla os objetos btns que receberão a tetxura escolhida
function configuraObjetos():Void
{
	trace("* 3º configura os objetos.");
	
	//aplica evento de clique para total de objetos no stage
	for (var i:Number=1; i<=totalDeObjetos; ++i)
	{
		//objetos btns
		var obj:MovieClip = _root[nomeObjeto+i];
		obj.texturas.gotoAndStop(frame); //para na textura padrão(frame 1) //acessa texturas mc onde tem 3 frames
		obj.onRelease = function()
		{
			this.texturas.gotoAndStop(frame); //acessa texturas mc onde tem 3 frames
			trace(this._name +" recebeu textura "+ frame);
		}
	}
}


Arquivo CS4:
http://www.mediafire...q4rbg0bb7acdm42

Abraço.
0

#10 User is offline   junior.c.e 

  • Group: Membros
  • Posts: 39
  • Joined: 03-July 11

Posted 18 October 2011 - 05:42 PM

Rodrigo muito obrigado mesmo era isso msm que eu queria :lol: :lol: :lol:
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)