Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Louzada

Action Script avançado

Recommended Posts

Olá amigos, eu estou com um problema. Na verdade dois. Um deles é que não sei como fazer o que preciso; O outro é tempo. Mas, não tempo devido a prazo etc. Porém, acabei de me tornar papai e nunca dá tempo de pesquisar suficiente para completar o meu menu... (risos)

 

Tenho um menu com 6 botões que é bem semelhante ao estilo deste site: http://www.animallogic.com/

 

Meu problema está em aplicar o conceito de movimento "geral" do menu após cada clique (no caso, onPress) sem fazer que o movimento inicial se repita.

 

Ex: Clico no botão INFO, executo um movimento para cima; Clico no botão HOME, executo outro movimento ou, faço com que o menu retorne ao ponto original no STAGE.

 

Enfim, já estou a mais de uma semana desenvolvendo este código e, cheguei neste ponto:

 

//

import flash.filters.*;

var Gaussian:BlurFilter = new BlurFilter;

var defaultAnimation:Object = defaultAnimation;

var opcaoClicada:String = "";

//

var btn_info:MovieClip;

var btn_menu:MovieClip;

var bi:Boolean = false;

//

btn_info.onRollOver = function(Void):Void {

teste.text = "rollOver";

menu = new mx.transitions.Tween(btn_info, "_xscale", defaultAnimation, 100, 126, .4, true);

menu = new mx.transitions.Tween(btn_info, "_yscale", defaultAnimation, 100, 126, .4, true);

menu = new mx.transitions.Tween(btn_info, "_alpha", defaultAnimation, 70, 100, .5, true);

};

btn_info.onRollOut = function(Void):Void {

teste.text = "rollOut";

menu = new mx.transitions.Tween(btn_info, "_xscale", defaultAnimation, 126, 100, .4, true);

menu = new mx.transitions.Tween(btn_info, "_yscale", defaultAnimation, 126, 100, .4, true);

menu = new mx.transitions.Tween(btn_info, "_alpha", defaultAnimation, 100, 40, .5, true);

};

//

// MEU PROBLEMAS MAIOR É AQUI!!! (bug)

btn_info.onPress = function() {

if (bi == false) {

bi = true;

new mx.transitions.Tween(btn_info, "_y", defaultAnimation, 357.0, 321.0, .5, true);

//

teste.text = "release";

new mx.transitions.Tween(btn_info, "_y", defaultAnimation, 357.0, 321.0, .5, true);

btn_info._visible = true;

//

} else {

bi = false;

new mx.transitions.Tween(btn_info, "_y", defaultAnimation, 321.0, 357.0, .5, true);

}

}

//

........................................................

 

Ps: Para testar este movie basta criar um documento novo, criar um botão e colocar o nome de instância de btn_info.

 

Espero que possam me ajudar, pois estou meio sem saída... Abraços!!!

Louzada

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao entendi direito a sua duvida cara

mas talvez se você usasse valores tipo...

 

apertou o botao = +1

apertou de novo = -1

 

se o botao for == 1 acontece isso

se for == 0 acontece akilo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pino, beleza?

 

É mais ou menos oq. você. mencionou. Vou tentar explicar ser mais claro e tmb. vou disponibilizar o teste reduzido que estou fazendo antes de inserir o código ao meu menu e tmb. uma referência de "pushmenu" (é algo parecido que quero fazer, mas diferente). Abaixo o texto, aqui os arquivos: http://paginas.terra.com.br/arte/eadigital/menu_teste_bnt.zip (copie e cole no navegador)

 

Veja bem, eu tenho um menu com 6 botões. Ex: b1, b2, b3, b4, b5, b6

 

Quando eu pressiono o botão b1 quero que "todos" os botões do stage se desloquem cerca de 20 pixels em X e Y à partir de um ponto determinado. Isso vale para qualquer um dos botões (b2, b3 etc). Porém, não quero que este movimento se repita. Todos os botões terão a mesma ação, mas não podem repetir esta mesma ação, compreende? Caso contrário ficariam "pulando" a cada clique do mouse... É mais ou menos aquela frase do Lord of the Rings "um controla todos" (risos), só que eles se revezam no poder.

 

Também desejo que quando eu clicar, por exemplo, no botão b3, um submenu se abra fazendo que os outros 5 botões se retraiam. Isto é, diminuam de tamanho e posição X e Y no stage.

 

A primeira ação do botão (onPress) somente retornará após eu clicar no botão b1, que será a HOME.

 

Vai ser um tanto longo este código, por isso se eu já resolver o problema de fazer fazer com que os botões não repitam o primeiro movimento já me será útil.

 

Agradeço sua ajuda. Grande abraço!!! :)

Louzada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Completando a informação acima, eu deixei o código mais enxuto para melhor compreensão. Com este código eu consigo fazer o mesmo botão animar do eixo X = 357.0 para X =321.0. E, com um segundo clique, faço com que o botão volte ao eixo 357.0. Porém, queria fazer com que o botão só animasse novamente quando outro botão fosse clicado (no meu caso é o HOME ou b1).

 

Vejam o código:

// LISTA DOS OBJETOS DECLARADOS. Obs: Nem todos são utilizados nesta etapa do código. //

//

import flash.filters.*;

var Gaussian:BlurFilter = new BlurFilter;

var defaultAnimation:Object = defaultAnimation;

var opcaoClicada:String = "";

//

// BOTOES DO MENU

var btn_info:MovieClip;

var btn_menu:MovieClip;

var bi:Boolean = false;

//

// FUNÇÕES ROLLOVER E ROLLOUT //

btn_info.onRollOver = function(Void):Void {

teste.text = "rollOver";

menu = new mx.transitions.Tween(btn_info, "_xscale", defaultAnimation, 100, 126, .4, true);

menu = new mx.transitions.Tween(btn_info, "_yscale", defaultAnimation, 100, 126, .4, true);

menu = new mx.transitions.Tween(btn_info, "_alpha", defaultAnimation, 70, 100, .5, true);

};

btn_info.onRollOut = function(Void):Void {

teste.text = "rollOut";

menu = new mx.transitions.Tween(btn_info, "_xscale", defaultAnimation, 126, 100, .4, true);

menu = new mx.transitions.Tween(btn_info, "_yscale", defaultAnimation, 126, 100, .4, true);

menu = new mx.transitions.Tween(btn_info, "_alpha", defaultAnimation, 100, 40, .5, true);

};

//

// FUNÇÃO ONPRESS E ONRELEASE. //

// MEU PROBLEMA É AQUI. POR FAVOR, PODERIAM ANALISAR SOMENTE ESTA ETAPA?//

btn_info.onPress = function() {

teste.text = "onPress";

if (bi == false) {

bi = true;

new mx.transitions.Tween(btn_info, "_y", defaultAnimation, 357.0, 321.0, .5, true);

//

teste.text = "release";

} else {

bi = false;

new mx.transitions.Tween(btn_info, "_y", defaultAnimation, 321.0, 357.0, .5, true);

//btn_info._visible = true;

}

}

 

Bem, creio que é isso. Eu continuo tentando. Mas, apesar de algum conhecimento ainda não estou conseguindo fazer. Estou "desenferrujando" no Flash. Não trabalhava com ele a quase 8 meses... Pois, sou tmb. ilustrador e meus trabalhos estavam mais focados nesta área.

 

Qualquer dica vai me ajudar muito com certeza, pois fará meu cérebro raciocinar ainda mais em AS.

 

Abraços!

Louzada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, alguém para me ajudar? É um simples caso de MC.executou.MC.não.executa.mais.

 

Eu avancei por aqui mais um pouco, mas ainda dá BUG. ps: leiam os dois posts anteriores para entender o problema, please. Está bem detalhado.

 

Abraços,

Louzada

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou dar uma olhada

=]

 

cara

to mto lerdo hj

nao consegiu saber qual seu problema

=P

você quer tipo um menu com submenus q vai jogando os menus principais pra baixo qdo abertos?

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente, tudo bem?

 

Estou disponibilizando online o layout do menu inteiro. Em flash para vocês olharem. Assim vai ficar fácil, para quem manja mesmo ActionScript poder me ajudar...

Preciso dessa força mesmo! Não ficaria aqui incomodando se já estivesse tentando a 2 semanas...

 

o link é: http://paginas.terra.com.br/arte/eadigital/menu_layout.zip (copie e cole no navegador)

 

Abaixo as imagens descritivas do problema:

 

Imagem Postada

//

//

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente, tudo bem?

 

Estou disponibilizando online o layout do menu inteiro. Em flash para vocês olharem. Assim vai ficar fácil, para quem manja mesmo ActionScript poder me ajudar...

Preciso dessa força mesmo! Não ficaria aqui incomodando se já não estivesse tentando a 2 semanas...

 

o link é: http://paginas.terra.com.br/arte/eadigital/menu_layout.zip (copie e cole no navegador)

 

Abaixo as imagens descritivas do problema (copiar link e colar no navegador):

 

paginas.terra.com.br/arte/eadigital/meu_menu.jpg

Imagem Postada

//

paginas.terra.com.br/arte/eadigital...icacao_menu.jpg

Imagem Postada

 

PS: Pq as imagens tão sumindo??? Inseri certinho aqui no fórum... Bom, os links estão ae. Obrigado. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei baixar esses exemplos mas deu um erro :

 

"O número máximo de conexões simultâneas para este tipo de arquivo foi alcançado.

Tente novamente outra hora. "

 

 

 

ps: o link da imagem esta errado, dá uma olhada tem ... no meio

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Eder, obrigado pelo interesse. Estou postando um link do Badongo para download pq. os links do Terra são horríveis.

 

Os arquivos podem ser descarregados aqui:

http://www.badongo.com/file/7213929

 

Também coloco o arquivo de teste (para visualização) aqui: http://paginas.terra.com.br/arte/eadigital/teste.swf

ps: está no Terra, então se der problema baixe o arquivo do Badongo que é até mais fácil.

 

Gostaria "mesmo" de um help, pois a única solução que vejo é complicadíssima. Vou demorar 2 semanas a mais construindo tudo porque não sei como se coloca uma condicional para um botão não executar uma segunda ação após ter executado uma vez. Se você. olhar o arquivo "teste.swf" verá que eu já consegui fazer com que um botão se mova para cima no "primeiro" clique do mouse e, se mova para baixo no "segundo" clique do mouse. Mas, não consigo fazer com que a ação seja ignorada ou, descarregada (delete não dá certe), da cena. Verá também que o arquivo do layout tem justamente o bug da repetição da animação.

 

Resumindo, eu tenho 6 botões; O primeiro é o botão HOME. Todos botões tem animação de mouseover, mouseout e release. Justamente no release que eu quero que a animação não se repita mais senão a animação ficará se repetindo a cada clique o que é ridículo... Eu preciso que essa animação se repita somente se eu clicar o botão HOME novamente, caso contrário, preciso de não se repitam as animações.

 

Vendo os arquivos você. vai entender fácil o problema.

 

Lembrando, toda as ações são executadas à partir do primeiro frame da timeline. Nda de ações em botão. Só tenho movieclips na cena.

 

Abraços e obrigado,

Eduardo Louzada

 

http://paginas.terra.com.br/arte/eadigital/teste.swf

 

 

tentei baixar esses exemplos mas deu um erro :

 

"O número máximo de conexões simultâneas para este tipo de arquivo foi alcançado.

Tente novamente outra hora. "

 

 

 

ps: o link da imagem esta errado, dá uma olhada tem ... no meio

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se era exatamente isso, mas testa ai

 

declara essa variável

 

var executou:Boolean = false

 

importa a classe tween para diminuir o codigo tb

 

import mx.transitions.*

 

e em cada botão o código fica assim:

 

btn_comerciais.onRelease = function(Void):Void  {
	loadMovie("BR3N.jpg", "alvo");
	
	//você TEM QUE ADICIONAR ESSE IF EM CADA UM
	if(executou==false){
		executou=true
		//btn_lg_sf._visible = true;
		
		//
		menu = new Tween(btn_reel, "_x", defaultAnimation, 427.1, 417.1, .5, true);
		menu = new Tween(btn_reel, "_y", defaultAnimation, 114.2, 124, .5, true);
		menu = new Tween(btn_comerciais, "_x", defaultAnimation, 485.6, 475.6, .5, true);
		menu = new Tween(btn_comerciais, "_y", defaultAnimation, 114.2, 124, .5, true);
		menu = new Tween(btn_videos, "_x", defaultAnimation, 571.5, 561.5, .5, true);
		menu = new Tween(btn_videos, "_y", defaultAnimation, 114.2, 124, .5, true);
		menu = new Tween(btn_vfx, "_x", defaultAnimation, 652.5, 642.5, .5, true);
		menu = new Tween(btn_vfx, "_y", defaultAnimation, 114.2, 124, .5, true);
		menu = new Tween(btn_clips, "_x", defaultAnimation, 723.5, 713.5, .5, true);
		menu = new Tween(btn_clips, "_y", defaultAnimation, 114.2, 124, .5, true);
		menu = new Tween(btn_info, "_x", defaultAnimation, 800.9, 790.9, .5, true);
		menu = new Tween(btn_info, "_y", defaultAnimation, 114.2, 124, .5, true);
		// AQUI DETERMINA-SE O QUE QUEREMOS VER OU NÂO NA AÇÃO DO BOTÃO
		btn_reel._visible = true;
		btn_comerciais._visible = true;
		btn_videos._visible = true;
		btn_vfx._visible = true;
		btn_clips._visible = true;
		btn_info._visible = true;
	}
};

 

para fazer ele executarem a animação novamente, você seta executou=false

 

 

 

veja se era isso

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Eder! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Eu testei aqui e, em dois testes o código foi bem sucedido. Farei mais testes em todo o meu e limparei um pouco mais o código. Qualquer coisa eu "grito" (risos)

 

Eder, obrigado mesmo pela ajuda!!!

 

Ps: Ainda não acredito que era somente uma função boleana. Eu estava usando esta lógica, mas sempre esbarrava em um erro. Agora está mais fácil de compreender. Obrigado novamente! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraços,

Eduardo Louzada

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.