..:: MX Studio Fóruns ::..: Dúvida com utilização da classe Motion (AS 2.0) - ..:: 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

Dúvida com utilização da classe Motion (AS 2.0)

#1 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 29 April 2009 - 12:00 PM

Possuo uma dúvida com a propriedade Motion.

Se eu possuir um Movie Clip (filme_mc) existente no palco e quiser que ele seja movido e dimensionado pelo clique do mouse por outros MCs, como faria isso?

Queria usar uma classe tween para tal, como a tweenLite (por exemplo)

Realizaria um onEnterframe no palco que o "filme_mc" esteja e se algum outro MC for clicado o filme_mc moveria dinamicamente por essa classe, seria isso?

A idéia é que se o click for executado algum outro MC ele move (com ease) e aumenta as dimensões dele para + 400 px, por exemplo. Depois se eu clicar em outro botao ele dimensiona pro tamanho original, usando ease e apaga o "filme_mc" com um visible = false;

Estaria certa essa lógica?

Abraços!


0

#2 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 29 April 2009 - 12:45 PM

Da para ser feito sim...

Não precisa colocar "onEnterFrame" não, basta colocar um evento "onRelease" nos MovieClips que você quer queexecutem algum tipo de ação.

Por exemplo, você tem o MovieClip "botao" e quer que quando ele seja clicado o seu MovieClip "filme_mc" seja aumentado...

Faz por tween.

Assim:

CÓDIGO
import mx.transitions.Tween; import mx.transitions.easing.*;

botao.onRelease = function () {
var tamanhoX:Tween = new Tween(filme_mc, "_width", Elastic.easeOut, filme_mc._width, filme_mc._width+400, 3, true);
var tamanhoY:Tween = new Tween(filme_mc, "_height", Elastic.easeOut, filme_mc._height, filme_mc._height+400, 3, true);
}


Isso deverá fazer com que seu MovieClip "filme_mc" mude de tamanho quando voce clicar no outro MovieClip.

Eu estou no trabalho e não tenho como testar se esta funcionando, da uma testada ai e ve se você entendeu o esquema.

De qualquer forma tem uma parte de tutoriais no site do MXSTUDIO com varios tutoriais falando disso, procure pelos que foram feitos pelo Natan, que estão super bem explicados !

Abração !
0

#3 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 29 April 2009 - 02:38 PM

QUOTE(ubi_rj @ 29/4/2009 11:04:23) <{POST_SNAPBACK}>
Da para ser feito sim...

Não precisa colocar "onEnterFrame" não, basta colocar um evento "onRelease" nos MovieClips que você quer queexecutem algum tipo de ação.

Por exemplo, você tem o MovieClip "botao" e quer que quando ele seja clicado o seu MovieClip "filme_mc" seja aumentado...

Faz por tween.

Assim:

CÓDIGO
import mx.transitions.Tween; import mx.transitions.easing.*;

botao.onRelease = function () {
var tamanhoX:Tween = new Tween(filme_mc, "_width", Elastic.easeOut, filme_mc._width, filme_mc._width+400, 3, true);
var tamanhoY:Tween = new Tween(filme_mc, "_height", Elastic.easeOut, filme_mc._height, filme_mc._height+400, 3, true);
}


Isso deverá fazer com que seu MovieClip "filme_mc" mude de tamanho quando voce clicar no outro MovieClip.

Eu estou no trabalho e não tenho como testar se esta funcionando, da uma testada ai e ve se você entendeu o esquema.

De qualquer forma tem uma parte de tutoriais no site do MXSTUDIO com varios tutoriais falando disso, procure pelos que foram feitos pelo Natan, que estão super bem explicados !

Abração !


Sim, perfeito!

Mas e se tivesse 4 mcs e que só uma vez um deles clicado o filme_mc acontece?

Porque eu tava fazendo partir desse pressuposto:

Você possui 4 mcs: botao_mc, botao2_mc, botao3_mc, botao4_mc e o clique que ativa o filme_mc é só um, portanto, quando faço os MCs e aplico a eles a propriedade dos Tweens, quando clico de novo acontece o tween.. Existe alguma forma de manipular os eventos se o mouse for clicado?

Pensei em um Booleano para o click, se for clicado uma vez = true; caso nao for clicado = false..

Mas não sei por onde começar isso..

0

#4 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 29 April 2009 - 03:01 PM

Pensou perfeitamente, é exatamente isso que você precisa fazer !

Coloque o seguinte código aqui em seus botões:

CÓDIGO
botao.onRelease = function () {
if (_root.clicado == true) {
trace ("O filme já foi redimensionado !").
} else {
var tamanhoX:Tween = new Tween(filme_mc, "_width", Elastic.easeOut, filme_mc._width, filme_mc._width+400, 3, true);
var tamanhoY:Tween = new Tween(filme_mc, "_height", Elastic.easeOut, filme_mc._height, filme_mc._height+400, 3, true);
_root.clicado = true;
}}


E lembre-se de criar a variável "clicado" no primeiro frame do seu projeto. Simplesmente assim:
CÓDIGO
clicado = false


Ve se da certo ai !

Abração !

0

#5 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 29 April 2009 - 03:31 PM

QUOTE(ubi_rj @ 29/4/2009 14:04:36) <{POST_SNAPBACK}>
Pensou perfeitamente, é exatamente isso que você precisa fazer !

Coloque o seguinte código aqui em seus botões:

CÓDIGO
botao.onRelease = function () {
if (_root.clicado == true) {
trace ("O filme já foi redimensionado !").
} else {
var tamanhoX:Tween = new Tween(filme_mc, "_width", Elastic.easeOut, filme_mc._width, filme_mc._width+400, 3, true);
var tamanhoY:Tween = new Tween(filme_mc, "_height", Elastic.easeOut, filme_mc._height, filme_mc._height+400, 3, true);
_root.clicado = true;
}}


E lembre-se de criar a variável "clicado" no primeiro frame do seu projeto. Simplesmente assim:
CÓDIGO
clicado = false


Ve se da certo ai !

Abração !



Perfeito, você é o cara!

Eu fiz exatamente isso, porém coloquei as variáveis do tween dentro de uma função chamada redimensionaLogo com as características lá dentro..
Aí deu certinho!

Agora me apareceu uma duvida..

dentro dessa função "redimensionaLogo" que possui todas as caracteristicas do redimensionamento do "filme_mc", como faço para criar um botão dinâmico quando a logo for redimensionada?
CÓDIGO
// Função redimensiona logo

function redimensionaLogo () {
    var tamanhoX:Tween = new Tween(logoZu, "_width", Strong.easeOut, logoZu._width, logoZu._width-350, 1, true);
    var tamanhoY:Tween = new Tween(logoZu, "_height", Strong.easeOut, logoZu._height, logoZu._height-100, 1, true);
    var escalaX:Tween = new Tween(logoZu, "_x", Strong.easeOut, logoZu._x, logoZu._x+20, 1, true);
    var escalaY:Tween = new Tween(logoZu, "_y", Strong.easeOut, logoZu._y, logoZu._y-160, 1, true);    
    // Cria o botão
        botao.Button = new Button();
    }



Estou travando nessa hora! Porque quero adicionar as mesmas propriedades to tamanho e posicionamento baseado na tween, o botão é dinamico, ele nao existe no palco e nem na biblioteca..
Aí depois acionaria a função nele de carregar um filme externo.

Está certo em colocar dentro dessa função?
0

#6 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 30 April 2009 - 12:31 AM

Cara, você vai precisar ter um componente em sua library.

Mas não vejo problemas nisso, basta arrastar um componente do tipo "button" para sua library.
Feito isso, o código abaixo vai funcionar perfeitamente.

CÓDIGO
// Função redimensiona logo

function redimensionaLogo () {
    var tamanhoX:Tween = new Tween(logoZu, "_width", Strong.easeOut, logoZu._width, logoZu._width-350, 1, true);
    var tamanhoY:Tween = new Tween(logoZu, "_height", Strong.easeOut, logoZu._height, logoZu._height-100, 1, true);
    var escalaX:Tween = new Tween(logoZu, "_x", Strong.easeOut, logoZu._x, logoZu._x+20, 1, true);
    var escalaY:Tween = new Tween(logoZu, "_y", Strong.easeOut, logoZu._y, logoZu._y-160, 1, true);
    
    // Criando seu Botão:
    this.createClassObject(mx.controls.Button, "botao", 1, {label: "Seu Titulo"});
    // Posicionando o botão
    botao._x = 0; botao._y = 0
    // Estabelecendo a função
    botao.onRelease = function () {
    trace ("Rafael Petribu");
    }
}



Ve se vai !

Abração !
0

#7 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 30 April 2009 - 01:14 AM

QUOTE(ubi_rj @ 29/4/2009 23:04:32) <{POST_SNAPBACK}>
Cara, você vai precisar ter um componente em sua library.

Mas não vejo problemas nisso, basta arrastar um componente do tipo "button" para sua library.
Feito isso, o código abaixo vai funcionar perfeitamente.

CÓDIGO
// Função redimensiona logo

function redimensionaLogo () {
    var tamanhoX:Tween = new Tween(logoZu, "_width", Strong.easeOut, logoZu._width, logoZu._width-350, 1, true);
    var tamanhoY:Tween = new Tween(logoZu, "_height", Strong.easeOut, logoZu._height, logoZu._height-100, 1, true);
    var escalaX:Tween = new Tween(logoZu, "_x", Strong.easeOut, logoZu._x, logoZu._x+20, 1, true);
    var escalaY:Tween = new Tween(logoZu, "_y", Strong.easeOut, logoZu._y, logoZu._y-160, 1, true);
    
    // Criando seu Botão:
    this.createClassObject(mx.controls.Button, "botao", 1, {label: "Seu Titulo"});
    // Posicionando o botão
    botao._x = 0; botao._y = 0
    // Estabelecendo a função
    botao.onRelease = function () {
    trace ("Rafael Petribu");
    }
}



Ve se vai !

Abração !



Foi! Valeu mesmo!!

Cara, acho que já é melhor deixar por aqui, você tirou todas as minhas dúvidas!
Tenho bastante dúvidas com a classe Tween e gostaria de sanar várias delas.. Principalmente quanto a navegação usando transitions, removendo conteudo de forma animada e puxando conteúdo de forma animada, etc..

Você entende disso? Ou alguém aqui no Fórum que entenda alguns conceitos de navegação no Flash.

0

#8 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 30 April 2009 - 03:29 PM

Tem um pessoal muito qualificado que frequenta o fórum, entre eles, o STAFF todo aqui tem um excelente conhecimento para responder as suas perguntas.

Pode perguntar sem problema !

Se ninguem souber a pior coisa que pode acontecer é você continuar como está hehehe...

Crie um tópico ai com suas dúvidas e vamos tentar sanar todas ok ?

Abração !
0

#9 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 30 April 2009 - 03:36 PM

QUOTE(ubi_rj @ 30/4/2009 14:04:01) <{POST_SNAPBACK}>
Tem um pessoal muito qualificado que frequenta o fórum, entre eles, o STAFF todo aqui tem um excelente conhecimento para responder as suas perguntas.

Pode perguntar sem problema !

Se ninguem souber a pior coisa que pode acontecer é você continuar como está hehehe...

Crie um tópico ai com suas dúvidas e vamos tentar sanar todas ok ?

Abração !


Então Rafael, preciso criar outro tópico para tal?

Se for eu pego essa pergunta que fiz no post anterior ao seu e abro um novo tópico!!


Abração! Valeu mesmo!!

0

#10 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 30 April 2009 - 05:59 PM

Claro, sem problemas !

Acho melhor criar um novo tópico já que vamos começar a tirar outras duvidas sobre um outro assunto....

Mas faça como preferir, pode continuar por aqui se quiser !

Abração !
0

#11 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 30 April 2009 - 06:37 PM

QUOTE(ubi_rj @ 30/4/2009 16:04:07) <{POST_SNAPBACK}>
Claro, sem problemas !

Acho melhor criar um novo tópico já que vamos começar a tirar outras duvidas sobre um outro assunto....

Mas faça como preferir, pode continuar por aqui se quiser !

Abração !


Então, tenho bastante dúvidas com a classe Tween e gostaria de sanar várias delas.. Principalmente quanto a navegação usando transitions, removendo conteudo de forma animada e puxando conteúdo de forma animada, etc..

Você manja disso?

Por exemplo, com AS2, posso fazer um primeiro keyframe calculando uma leitura através de labels?
Aí em cada label inserida nos keyframes seguintes ele executa um loadmovie com um Tween direcionando o movimento ou efeito que o container fará, isso é valido?

Existem outras formas de navegação, mas desconheço a lógica.

Espero que tenha sido claro!

Valeu mesmo Rafael!!!

Abraço!!

0

#12 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 30 April 2009 - 06:52 PM

Cara, da perfeitamente, e não é complicado, na verdade é até tranquilo de fazer....
Inclusive da para criarmos uma função randomica que cada hora vai direcionar o seu container para uma direção diferente....
Mas se você quiser que em cada frame ele va para uma direção exata tambem da para ser feito sem problemas....

O que você tem em mente ?

Abraço !
0

#13 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 01 May 2009 - 12:54 AM

QUOTE(ubi_rj @ 30/4/2009 17:04:05) <{POST_SNAPBACK}>
Cara, da perfeitamente, e não é complicado, na verdade é até tranquilo de fazer....
Inclusive da para criarmos uma função randomica que cada hora vai direcionar o seu container para uma direção diferente....
Mas se você quiser que em cada frame ele va para uma direção exata tambem da para ser feito sem problemas....

O que você tem em mente ?

Abraço !



Fala irmão!

Então, exatamente isso!! Cara hora que o botao for clicado a função direciona uma sessão diferente e quando essa nova sessão vier, sai a que estava no palco (animada por codigo)


Seria como esse site aqui:

Site .

Agora, em OFF:

Baseado nessa idéia de Tween / Motion via código, seria possível colocar as Actions dessa função no primeiro keyframe e em outros 6 keyframes colocar um container _mc (pode ser gerado no código dinamicamente!) que carrega um conteúdo externo?

Mais ou menos como esse site aí, a transição é bem bacana. Mas quero aprender o básico mesmo, só de aprender a tirar o conteudo e colocar ele da forma desse site ja dá pra experimentar muitas outras formas!


Valeu mais uma vez!!!

PS: Esse que é o válido, o post de cima pode ser deletado!
0

#14 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 01 May 2009 - 10:37 AM

Bom, tudo isso da para ser feito, mas você precisa começar a estudar para ter as idéias para que a gente possa tentar te orientar...

Existe MUITA coisa falando sobre Tween na internet, eu peguei algumas coisas para você.
Da uma olhada, estuda, faz seus exemplos e depois, se tiver dúvida venha perguntar !

http://www.mxstudio.com.br/flash/estudo_de...__classe_tween/
http://www.kirupa.com/developer/actionscript/tween_part2.htm
http://www.kirupa.com/developer/actionscript/tween.htm
http://www.kirupa.com/developer/mx2004/transitions.htm

Abração !
0

#15 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 01 May 2009 - 11:52 AM

QUOTE(ubi_rj @ 1/5/2009 09:05:55) <{POST_SNAPBACK}>
Bom, tudo isso da para ser feito, mas você precisa começar a estudar para ter as idéias para que a gente possa tentar te orientar...

Existe MUITA coisa falando sobre Tween na internet, eu peguei algumas coisas para você.
Da uma olhada, estuda, faz seus exemplos e depois, se tiver dúvida venha perguntar !

http://www.mxstudio.com.br/flash/estudo_de...__classe_tween/
http://www.kirupa.com/developer/actionscript/tween_part2.htm
http://www.kirupa.com/developer/actionscript/tween.htm
http://www.kirupa.com/developer/mx2004/transitions.htm

Abração !



Perfeito!! Esse sobre transitions tá massa demais de sacar!!

Já to estudando ele! Eu fiz um assim via as3! Dessa forma aí!

Vou ver se uso as Tween Class como a TweenLite, porque a Tween do próprio Flash parece que não é legal!

Vou construir um exemplo aqui e mostro como ficou, ja é?

Abração!!
0

#16 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 01 May 2009 - 12:37 PM

thumbsup.gif
0

#17 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 01 May 2009 - 02:10 PM

Então, perfeito!

Fiz aqui, deu certinho.

Estou tendo problemas para aplicar no exemplo que fiz do redimensionamento de logo quando se clica no botão, mas beleza. O botão tá recebendo duas funções no onRelease (uma do redimensiona e outra de abrir o swf externo) mas isso eu deixo pra depois.

O que pega é a seguinte parada:

Eu tentei aplicar aqui o Tween , porque no exemplo do Kirupa ele lê pela timeline.. Mas o Tween Class não é movimentado na Timeline. Como faria para movimentar no swf externo, sem necessidade de timeline e isso se aplicar ao código?

Abração!
0

#18 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 01 May 2009 - 07:28 PM

Você precisa fazer o seguinte:

Cria um MovieClip e instancia ele de 'holder'.
Dentro do MovieClip "holder" cria outro, pode ser instanciado de "holder" também, não tem problema.

Com isso você vai ter uma estrutura com 2 MovieClips, ambos chamados "holder", um dentro do outro.

Carrega seu conteudo externo no MovieClip "holder" interno, ou seja:

CÓDIGO
_root.holder.holder.loadMovie ("externo.swf",1);


E sempre que quiser movimentar seu conteudo externo faça isso referenciando o primeiro "holder", ou seja:

CÓDIGO
var movimento:Tween = new Tween(_root.holder, "_x", Regular.easeOut, _root.holder._x, 500, 3, true);


Com isso você movimenta a estrutura toda.
E dentro dessa estrutura (holder) vai estar uma outra estrutura com seu SWF externo.
Arrastando o pai, você arrasta o filho.

Sacou ?

Abração !
0

#19 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 01 May 2009 - 08:46 PM

QUOTE(ubi_rj @ 1/5/2009 18:05:23) <{POST_SNAPBACK}>
Você precisa fazer o seguinte:

Cria um MovieClip e instancia ele de 'holder'.
Dentro do MovieClip "holder" cria outro, pode ser instanciado de "holder" também, não tem problema.

Com isso você vai ter uma estrutura com 2 MovieClips, ambos chamados "holder", um dentro do outro.

Carrega seu conteudo externo no MovieClip "holder" interno, ou seja:

CÓDIGO
_root.holder.holder.loadMovie ("externo.swf",1);


E sempre que quiser movimentar seu conteudo externo faça isso referenciando o primeiro "holder", ou seja:

CÓDIGO
var movimento:Tween = new Tween(_root.holder, "_x", Regular.easeOut, _root.holder._x, 500, 3, true);


Com isso você movimenta a estrutura toda.
E dentro dessa estrutura (holder) vai estar uma outra estrutura com seu SWF externo.
Arrastando o pai, você arrasta o filho.

Sacou ?

Abração !


Bacana! Vou tentar movimentar esses conteúdos externos. A lógica é um holder é pra carregar e outro pra movimentar, certo? Senão dá pau na hora de aplicar o movimento e o carregamento de swf externos ao mesmo tempo, é isso?

O exemplo do Kirupa usa timeline, como faria para fazer o "intro" e a "outro" de cada um desses MCs externos dinamicamente?

Eu tenho aí 5 botões, eles vao carregar conteúdos externos. Quando um vem, ele vem animado (foi animado na timeline) e pára. Aí clico no outro botão (pode ser qualquer outra sessão) e retira a primeira animação (ele vai pra proxima keyframe do mc externo) e chama o novo mc externo... Beleza, saquei isso no site do Kirupa e manjei como faz.

Mas a treta é:

E se em cada MC externo eu quiser animr via Tween Class? Como faria?

Aqui está como funciona em cada mc externo:

No primeiro frame de um mc externo desse projeto está assim:

CÓDIGO
midframe  = 59;

Isto é no frame 59 tem um stop;

Quando outro MC externo é chamado toca-se tudo depois do frame 59 desse filme e quando acaba tem um código na keyframe final , assim:

CÓDIGO
_root.container.loadMovie(_root.currMovie+".swf");


Lá no filme principal eu linkei os botões assim:

CÓDIGO
this.botao1.onRelease=function(){

    // Transition
    if (_root.currMovie == undefined) {
    _root.currMovie = "filme1";
    _root.container_mc.loadMovie("filme1.swf");
    } else if (_root.currMovie != "filme1") {
    if (container._currentframe >=container.midframe) {

    _root.currMovie = "filme";
    container.play();

    }

   }

    
}


Cada botão está relacionando-se assim;

Enfim, a pergunta é: Como pegar essa lógica de "intro" e "outro" e aplicar em Tween Class, já que não tem timeline, como ele vai entender quando executar a de ida e a de volta?


Partindo daí eu já me viro, tô pegando essa parada, muito bom movimentar coisas por código, dá trabalho pra se pegar o ritmo, mas depois que pega flui que é uma beleza!!

Valeu Rafael, valeu mesmo!

Abração!!!
0

#20 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 02 May 2009 - 12:59 PM

Pelo que eu entendi, você quer saber o seguinte:

1 - Como fazer para saber o momento exato em que um MovieClip vai sair do palco para que você possa entrar com o outro de maneira sincronizada.
2 - Depois que entender a lógica, como fazer.

É isso ?

Até porque se você for fazer tudo por programação é melhor que TODOS estejam se movimentando por actionscript.

Abração !
0

#21 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 02 May 2009 - 01:04 PM

QUOTE(ubi_rj @ 2/5/2009 11:05:43) <{POST_SNAPBACK}>
Pelo que eu entendi, você quer saber o seguinte:

1 - Como fazer para saber o momento exato em que um MovieClip vai sair do palco para que você possa entrar com o outro de maneira sincronizada.
2 - Depois que entender a lógica, como fazer.

É isso ?

Até porque se você for fazer tudo por programação é melhor que TODOS estejam se movimentando por actionscript.

Abração !



Isso! Não quero fazer via timeline, quero fazer td via código!

Saca?
0

#22 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 02 May 2009 - 02:17 PM

Bom, eu acho melhor você fazer o seguinte:

Vou disponibilizar um site que já tem todos estes prototypes prontos.

No link baixo você vai encontrar muita informação sobre tween, é um site muito bom para você enteder tanto dos tipos de animação (easeOut,EaseElastic...) como também como se faz para estruturar o código.

Aqui você tem as instruções e o link para realizar o download:
http://hosted.zeh.com.br/mctween/using.html

Aqui você vai encontrar como funciona cada tipo de animação de Tween:
http://hosted.zeh.com.br/mctween/animationtypes.html

Aqui você vai encontrar como estruturar cada comando:
http://hosted.zeh.com.br/mctween/documentation.html

Você vai reparar que ele já tem scripts prontos para transição de posição, tamanho, alpha, cor, escala...tudo. Eu só usso isso porque acho muito mais fácil de trabalhar, além de possuir algumas vantagens.

Para o seu caso a gente vai utilizar o comando "slideTo ()", que significa "deslizar para" em protugues.
É exatamente isso que você quer, que seu MovieClip deslize até um determinado lugar.

Se você clicar no link do "slideTo()" vai ver que ele possui essa estrutura:

<MovieClip|TextField>.slideTo(x, y [, seconds, animation type, delay, callback, extra1, extra2]);

O que esté entre os couchetes é opcional ("[...]"), mas nós vamos utilizar algumas coisas importantes, o que importa pra gente é o seguinte:



<MovieClip|TextField>.slideTo(x, y [, seconds, animation type, delay, callback]);

Simplificando:

seuMovieClip.slideTo(x, y, seconds, animation type, delay, callback);

Entendendo o comando:

seuMovieClip -> É o MovieClip que vai sofrer a ação.
slideTo -> É o comando para que ele deslize.
x e y -> São as coordenadas para qual você quer que ele deslize.
seconds -> É o tempo em segundos para que ela termine a animação.
animation type -> É o tipo de animação que você vai querer, para isso tem tudo detalhado no link acima que coloquei.
delay -> É o tempo que ela vai demorar para iniciar, normalmente a gente programa isso pra 0.
callback -> Isso é o que a gente precisa. Essa parte do comando estipula que função você vai querer executar assim que essa transição acabar.

Com esse callback, a gente pode estipular que que a gente quer fazer quando o seu "slideTo" terminar.

Supondo que você tenha uma função assim:
CÓDIGO
   function aviso () {
      trace ("Fim");
      }


E você quer que ela seja executada assim que seu processo de slide terminar, ou seja, faça o comando assim:

CÓDIGO
seuMovieClip.slideTo(100, 200 , 3, "easeOut", 0, aviso);


Repare que depois que o slide terminar você vai chamar a função 'aviso".

Com isso você pode manipular o tempo exato dos eventos de Tween de seu projeto.

Espero que tenha entendido, mas se pintar qualquer dúvida é só falar eim !

IMPORTANTE:

Não esqueça de sempre adicionar a seguinte linha de comando no primeiro frame de seu projeto caso queira utilizar estes comandos:
CÓDIGO
#include "mc_tween2.as"


Abração !

0

#23 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 04 May 2009 - 05:46 PM

Fala rapaz, beleza?

Hoje a noite trago para cá os exemplos e posto minhas dúvidas permeando essas grandiosas (e valiosas!) dicas sobre Tween Class.

Tentei fazer um exemplo de transição entre filmes externos com botoes via tween (sem códigos) e tive alguns probleminhas!

Abraço!
0

#24 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 06 May 2009 - 02:18 AM

QUOTE(Uriel Juliatti @ 4/5/2009 16:05:08) <{POST_SNAPBACK}>
Fala rapaz, beleza?

Hoje a noite trago para cá os exemplos e posto minhas dúvidas permeando essas grandiosas (e valiosas!) dicas sobre Tween Class.

Tentei fazer um exemplo de transição entre filmes externos com botoes via tween (sem códigos) e tive alguns probleminhas!

Abraço!


Então, vamos lá:

Eu fiz um FLA aqui para testar..

Comecemos pela parte principal, o fla que possui os 3 botôes com um container para chamar os externos..

Então vamos ao código dos botões (cvoloquei um de exemplo só)

CÓDIGO
this.botao1.onRelease=function(){
    if (_root.currMovie == undefined) {
    _root.currMovie = "filme1";
    _root.container.loadMovie("filme1.swf");
    } else if (_root.currMovie != "filme1") {
    if (container._currentframe >= container.midframe) {
    _root.currMovie = "filme1";
    container.play();


    }

    }
    
}


Agora vamos ao filme externo e seu código:

CÓDIGO
#include "mc_tween2.as"
// Entrando;
function aviso () {
        quadrado.pauseTween(_alpha = 100);
        trace("pausou");
      _root.container.loadMovie(_root.currMovie+".swf");
      }
quadrado._alpha = 0;
quadrado.alphaTo(100, 1, "linear");
quadrado.slideTo(200, 100 , 3, easeInQuad, 0, aviso);


A pergunta é Como faria para fazer o quadrado sair (via código) quando um outro botão for acionado e chamar o conteúdo do "filme2" animado (dinamicamente claro)?

E assim suscetivamente..

Era essa minha dúvida com os tweens. Eu faço ele vir quando o botão é clicado, mas nao faço ideia como removo ele (animado via codigo com tween) e faço outro filme externo entrar (tb animado via tween) e assim sucetivamente (para cada botao, independente da ordem)

Abraço!

0

#25 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 06 May 2009 - 10:35 PM

Vou te explicar o pensamento, e você tenta montar ai baseado no que ja expliquei. Se não conseguir eu te ajudo, mas é importante você tentar....

Bom, o quadro que vai carregar precisa estar inicialmente fora da tela, ou seja, no lado esquerdo do monitor, antes do início do stage....

Após que o carregamento for concluido você precisa dar um slideTo para move-lo até onde deseja.

Quando ele for sair ele precisa correr para o outro lado da tela, ou seja, no lado direito do monitor, após o fim do stage....

Da um slideTo para isso acontecer, e após ele ter completado o percurso manda ele de volta para a posição inicial (antes do stage), mas não usa um slideTo, apenas troque as propriedades X e Y dele, dessa forma ao inves de deslizar ele vai se teletransportar pro outro lado, sem ninguem nem notar.

Para organizar esses comandos todos de maneira legal eu aconselho você a fazer varias funções:

Ex:

function carrega () {
Aqui você coloca o MovieClip na posição inicial e carrega o conteudo externo
Quando acabar de carregar, chama a função desliza()
}

function desliza () {
Aqui você movimenta o MovieClip até a posição desejada no meio do stage.
}

function descarrega () {
Aqui você manda o MovieClip deslizar até depois do stage.
Quando acabar de deslizar, chame a função carrega() para recomeçar o processo.
}

Olha, não vou mentir, pra você que ta começando, existem MUITOS truques que você ainda não conhece e vai ficar complicado de montar isso sem dor de cabeça, mas como falei, se você for tentando vai descobrindo muitas coisas.

Como falei, se sentir dificuldades ME AVISA que a gente tenta melhorar ok ?

Abração !
0

#26 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 07 May 2009 - 01:08 AM

Opa. vou me esforçar pra realizar isso e dar certo! Beleza?

Estou iniciando mesmo velho, preciso de muita ajuda até me acostumar. Mas a vantagem é que tenho contato direto com o programa e pratico todos os dias..

Acho que isso ajuda! E você não tem idéia de como esses seus helps são úteis, cara!

Valeu mesmo!

Abraço, qualquer dúvida posto aqui.
0

#27 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 07 May 2009 - 06:22 AM

QUOTE(Uriel Juliatti @ 7/5/2009 00:05:47) <{POST_SNAPBACK}>
Opa. vou me esforçar pra realizar isso e dar certo! Beleza?

Estou iniciando mesmo velho, preciso de muita ajuda até me acostumar. Mas a vantagem é que tenho contato direto com o programa e pratico todos os dias..

Acho que isso ajuda! E você não tem idéia de como esses seus helps são úteis, cara!

Valeu mesmo!

Abraço, qualquer dúvida posto aqui.


Fala Rafael, beleza??

Vamos lá! Acho que fiz certinho... O único problema é executar as funções a partir dos botões!

Saca aí:

Fiz assim nos botôes do principal:

CÓDIGO
this.botao1.onRelease=function(){
    if (currMovie == undefined) {
    currMovie = "filme1";
    container.loadMovie("filme1.swf");
    } else if (currMovie != "filme1") {
    if (container._currentframe >= container_mc.midframe) {
    currMovie = "filme1";
    container.play();
    }
    }
    
}

this.botao2.onRelease=function(){
    if (currMovie == undefined) {
    currMovie = "filme2";
    container.loadMovie("filme2.swf");
    } else if (currMovie != "filme2") {
    currMovie = "filme2";
    container.play();

    }
    
}


Minha dúvida aí é: Nos botoes eu faço que o segundo IF pegue detalhes do Tween com o método "getTween"? Poque o midframe que peguei como exemplo era para timeline, coloquei somente a função aí como exemplo..

Como faria isso, funcionar? Além do que se eu clico no botao2 (com o conteúdo do botao1 já carregado) ele não abre o "filme2.swf"! E vice-versa!

Agora vamos ao código de cada filme externo:

filme1.swf/filme2.swf estão assim:

CÓDIGO
#include "mc_tween2.as"
// Entrando;
function carrega () {
        quadrado._x = -113;
        quadrado._y = 152.5;
}
quadrado.onEnterFrame = function(){
    carrega();
    delete this.onEnterFrame;
    quadrado.tween(["_x", "_alpha"], [200, 100], 0.5, easeInQuad, 0, volta);
    quadrado.lockTween(); // Fecha o filme;
    delete this.onEnterFrame;
}
function volta () {
    quadrado.tween(["_x", "_alpha"], [500, 100], 0.5, easeInQuad, 0, carrega);

}


Aí está o segredo, certo?
Quando chego no final ele me manda para o início, correto? Mas eu coloquei um "lockTween" ali porque foi a unica coisa que PAUSOU a animação! Caso contrário ele iria para a função "volta" de uma veze faria tudo de uma maneira linear!
Lembrando que fiz exatamente como você falou, o MC está antes do stage, quando ele passa no meio e vai para o outro canto ele já vai para a função "carrega" com as propriedades do X e Y determinadas, aí quem vê pensa que ele está sumido, enquanto somente voltou para a posição!

A grande dúvida é essa: Como manipular pelos botões essas propriedades colocadas nas funções de cada MC Externo? É só chamar no código do filme principal?

Aprendi bastante, cara! Me dê apenas uma luz para que possa tentar resolver isso "penando" mesmo! Quanto menos script pronto, mais eu aprendo.

É isso ai.

Abração!!!
0

#28 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 08 May 2009 - 01:01 AM

Fiz um esquema bem simples para você estudar !
Tudo que acontece é feito por programação.

Ta bem simples, mas deve tirar algumas duvidas suas, qualquer coisa posta ae.

http://rapidshare.com/files/230452034/Desktop.rar.html

Abração !
0

#29 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 08 May 2009 - 10:23 AM

QUOTE(ubi_rj @ 8/5/2009 00:05:02) <{POST_SNAPBACK}>
Fiz um esquema bem simples para você estudar !
Tudo que acontece é feito por programação.

Ta bem simples, mas deve tirar algumas duvidas suas, qualquer coisa posta ae.

http://rapidshare.com/files/230452034/Desktop.rar.html

Abração !



Tu é O cara! Hoje a noite vou fazer um mini hotsite testando várias coisas que aprendi pro aqui! o hitTest, o Tween Class, o LoadClip e a classe MovieClipLoader e qualquer dúvida venho aqui!!

Tô aprendendo pra peste!
0

#30 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 08 May 2009 - 01:03 PM

Show, posta ae !!

QUOTE
Tô aprendendo pra peste!


blink.gif


Abração !


0

#31 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

  Posted 08 May 2009 - 01:44 PM

QUOTE(ubi_rj @ 8/5/2009 12:05:13) <{POST_SNAPBACK}>
Show, posta ae !!

QUOTE
Tô aprendendo pra peste!


blink.gif


Abração !



thumbsup.gif

Isto é, tô aprendendo coisas que nao tinha a mínima noção!

Então saca essa:
CÓDIGO
function carrega () {
container._x = -520;
container._y = 100;
container.removeMovieClip (holder)
container.createEmptyMovieClip ("holder",1);
container.holder.loadMovie (imagem_da_vez,1);
deslizaIn()
}


O que você fez aqui foi pegar o container, relocalizá-lo , remover o movieClip e criar outro (dando seu devido nome: holder), depois você criou um "imagem_da_vez", essa imagem_da_vez é uma variável para chamar dinamicamente qualquer conteúdo que for carregado no holder, correto?

Aí você utilizou o "imagem_da_vez" dentro da função dos botões:

CÓDIGO
_root.imagem_da_vez = "imagem2.jpg";
~

Mas qual a necessidade do movieClip "container" lá no palco se você está usando um createMovieClip? Para evitar de usar classe (linkage) e um "addChild" depois para imprimir na tela caso o movieClip estivesse na library?!

É isso aí! Prefiro entender o código antes de começar a trampar o lance!

Valeu, hoje começo algo e amanhã já posto aqui pra gente!!
0

#32 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 11 May 2009 - 04:20 PM

É.. A dúvida ainda permeia! heheh
0

#33 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 11 May 2009 - 10:46 PM

Acredito que pelo fato de você estar criando o MovieClip dinamicamente pelo createEmptyMovieClip, você não poderia chamar nas funções que movimentam o MovieClip.

Faz um teste, experimente não criar outro MovieClip e movimentar apenas o MovieClip container.

[]s
0

#34 User is offline   ubi_rj 

  • Group: Moderador Global
  • Posts: 2920
  • Joined: 29-June 07

Posted 12 May 2009 - 11:01 AM

É exatamente isso ai...

Ao carregar um conteudo externopara dentro de um MovieClip você acaba perdento uma série de comandos sobre este.
Por este motivo, por segurança, o que a gente faz é criar um MovieClip no palco, só que ao invés de carregar o conteudo externo diretamente para dentro dele, a gente cria dinamicamente um novo MovieClip (no meu caso o holder) dentro do principal (container).
Depois de criar, a gente carrega o conteudo externo dentro do "holder", que esta dentro do "container", isso faz com que somente o "holder" perca algumas de suas propriedades, deixando o MovieClip "container" intacto !

Sendo assim, a gente movimenta o "container2, pois movimentando o "container" a gente movimenta o holder !

Como o Natan falou, se você não criar o "holder", e carregar diretamente no "container" provavelmente você pode ter problemas !

Abração !
0

#35 User is offline   Uriel Juliatti 

  • Group: Membros
  • Posts: 120
  • Joined: 27-March 09

Posted 12 May 2009 - 01:05 PM

QUOTE(ubi_rj @ 12/5/2009 10:05:48) <{POST_SNAPBACK}>
É exatamente isso ai...

Ao carregar um conteudo externopara dentro de um MovieClip você acaba perdento uma série de comandos sobre este.
Por este motivo, por segurança, o que a gente faz é criar um MovieClip no palco, só que ao invés de carregar o conteudo externo diretamente para dentro dele, a gente cria dinamicamente um novo MovieClip (no meu caso o holder) dentro do principal (container).
Depois de criar, a gente carrega o conteudo externo dentro do "holder", que esta dentro do "container", isso faz com que somente o "holder" perca algumas de suas propriedades, deixando o MovieClip "container" intacto !

Sendo assim, a gente movimenta o "container2, pois movimentando o "container" a gente movimenta o holder !

Como o Natan falou, se você não criar o "holder", e carregar diretamente no "container" provavelmente você pode ter problemas !

Abração !



E essa regra se aplica ao AS3 também?
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)