Ir para conteúdo

Arquivado

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

Amilton Aquino

Váriáveis no AS 3

Recommended Posts

Olá pessoal!No Action Script 2 o envio de uma variável de um MC para o stage funcionava da seguinte forma:_root.nomedavariavel = "valor da variavel";No CS 3 o _root é substituido por "stage" (não sei pra que diabos alterar isso!). Tentei então fazer a alteração, mas não funcionou. Ou seja, parece que mudaram também a nossa tão amada sintaxe do ponto. Enfim, alguém já descobriu como enviar variáveis entre movie clipes e/ou para a timeline principal?Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom que o Imasters colocasse um tópico fixo sobre o AS 3, pois, pelo que pude ver, vão surgir muitas dúvidas sobre o assunto. Esta de cima é apenas um exemplo. Por falar nisso, alguém aí sabe como passar variáveis de um movie para outro no Flash CS 3?Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postei este mesmo tópico em três outros Fóruns e apenas em um houve alguam interação. No entanto, até agora ninguém sugeriu uma forma efetiva se se passar uma variável de um mc para a timeline principal ou para outro mc. Será que alguém aí encara este desafio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora seria assim

 

para pegar uma variavel declarada no root, de qualquer lugar

 

var obj:MovieClip =  MovieClip(root);trace(obj.variavel);

 

ou numa linha

 

trace(MovieClip(root).variavel);

 

 

 

o mesmo vale para usar o parent

 

 

var obj:MovieClip =  MovieClip(this.parent.parent);trace(obj.variavel);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eder,Primeiramente, obrigado pela dica. Finalmente uma luz no fim deste túnel!!Consegui levar a variavel declarada no root para o MC incluíndo o primeiro código que você postou. No entanto, não consegui o inverso. você sabe como?Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm não to com flash aberto aqui... mas de olhar o cód... ficaria assimvar obj:MovieClip = MovieClip(seu_mc);trace(obj.variavel);dai coloca no root e ele busca dentro do mc

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse codigo vai ficar no root, para acessar uma variavel dentro de um mc

 

 

var obj = MovieClip(this.movie1.movie2)trace(obj.variavel)

 

 

nesse caso não funciona trocar o this por root

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você deseja fazer é acessar da time-line principal, uma variavel declarada dentro de uma movieCLip?

 

se for, deve ser feito assim(esse código deve ir na time-line principal):

 

 

var obj = MovieClip(this.nome_do_mc_no_palco)trace(obj.variavel)

 

 

se não for, explique melhor a sua duvida

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exatamente isso, Eder! Tenho um MC que deve mandar uma variável para ativar uma ação na timeline principal.O código que você sugeriu me parece correto, aliás, já tinha tentando ele também, mesmo antes de você postar. Mas, surpreendemente, não funciona. Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um MC que deve mandar uma variável para ativar uma ação na timeline principal.

ja tentou usar com parent?

 

var obj:MovieClip = MovieClip(this.parent);

trace(obj.variavel);

 

ou mais de um this.parent.parent

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eder!Infelizmente também não funcionou. Tentei encontrar algum material oficial que respondesse a esta dúvida tão elementar que é passar uma variável de um lugar para outro e tudo que encontrei sobre variável não dá nenhuma pista sobre este problema. Realmente a Adobe pisou na bola feio. Espero que consigamos resolver esta charada.Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eder!Tenho um mc que ao ser executado, no seu último frame mandaria uma variável para a timeline principal. Em AS 2 seria apenas usar a sintaxe do ponto. Algo assim _root.nomedavariavel = "valor da variavel";No entanto, no AS 3 isso não funciona. A minha queixa é justamente esta, pois não encontrei nenhum paragrafo sobre uma mudança tão profunda. Tudo fica sempre nas explicações de que agora é necessário declarar as variáveis com var e etc.Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você testou como eu mostrei acima?

 

 

 

var obj:MovieClip =  MovieClip(root);obj.nomedavariavel = "valor da variavel";

 

ou mesmo

 

 

MovieClip(root).nomedavariavel = "valor da variavel";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi sua sugestão. Estes códigos seriam para serem colocadas na timeline principal? Se for, não atendem ao problema, pois declaram a variável lgo em seguida, sendo que o problema que postei é "como enviar uma variável de um MC para a timeline principal?". Logo, esta variável deve ser declarada no MC e não na timeline principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

axo que estamos com um problema de nomeclatura :wacko:

 

você disse lá em cima

 

 

Tenho um mc que ao ser executado, no seu último frame mandaria uma variável para a timeline principal. Em AS 2 seria apenas usar a sintaxe do ponto. Algo assim

 

_root.nomedavariavel = "valor da variavel";

portanto

 

nesse caso você esta atribuindo ao nivel root uma variavel chamada nomedavariavel

 

nesse caso você não havia declarado ela préviamente, mas atribuiu o valor

 

 

em AS3, você deve declarar a variavel antes de usa-la, então na time-line principal você deve declara-la

assim:

 

var nomedavariavel:String

e no ultimo frame do seu movieCLip, para atribuir um valor a essa variavel que ja foi declarada, você deve fazer assim:

 

MovieClip(root).nomedavariavel = "valor da variavel";

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Éder,Me expressei mal no último post. Não deveria usar a palavra "declarar" e sim "atribuir". No entanto, já havia tentando declarar a variável também na timeline principal, mas também não funcionou.Meu último teste foi o seguinte. Na timeline principal, incluí o seguinte código:

var variavel:String;var obj = MovieClip(this.nome_do_mc)trace(obj.variavel)

e no MC:

MovieClip(root).variavel = "valor da variavel";

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.