Se eu ponho um mc no primeiro quadro, ai dentro dele ponho duas variaveis
var1 = 5
var2 = 10;
eu posso no quadro 2 por pra exibir elas com trace?
num ta saindo aki, ja tentei por trace(_root.mc.var1) / trace(mc.var1)
num vai, mostra indefined, tem outro jeito?
brigado
Da Pra Mostra A Variavel De Um Mc Num Frame?
Started By Newbay, 06/07/2005, 22:47
4 replies to this topic
#1
Posted 06/07/2005, 22:47
#2
Posted 07/07/2005, 08:46
Estas variáveis só existem nos frames onde está o mc.
#3
Posted 07/07/2005, 11:12
Depende da forma que você declara a variável...
Essas são as três formas. Faça um teste, coloque no seu primeiro frame:
E no segundo:
Qualquer dúvida poste novamente.
Abraço
var x:Number = 10;Desta forma, a variável só estará acessível dentro do escopo onde foi criada.
x = 10;Desta forma, a variável estára disponível dentro da Timeline onde foi criada, portanto pode ser acessada de qualquer escopo daquela Timeline.
_global.x = 10;E desta forma ela pode ser acessada de qualquer Timeline.
Essas são as três formas. Faça um teste, coloque no seu primeiro frame:
var num1:Number = 5; var num2:Number = 10;
E no segundo:
stop(); trace(num1 / num2);
Qualquer dúvida poste novamente.
Abraço
#4
Posted 07/07/2005, 21:43
brigado, pondo no fram deu;
Se eu por no frame 1 as variaveis, e por trace no 2 mostra normalmente
se eu fizer assim
por um MC no 1 frame, e apertar f9, vai entrar nas acoes dele;
ai eu ponho teste como nome para essa instancia
onClipEvent(enterFrame){
x=10;
}
no 2 frame eu por
trace(x) , ou trace(teste.x) , ou trace(_root.teste.x)
ai num mostra, mostra indefined ((
Se eu por no frame 1 as variaveis, e por trace no 2 mostra normalmente
se eu fizer assim
por um MC no 1 frame, e apertar f9, vai entrar nas acoes dele;
ai eu ponho teste como nome para essa instancia
onClipEvent(enterFrame){
x=10;
}
no 2 frame eu por
trace(x) , ou trace(teste.x) , ou trace(_root.teste.x)
ai num mostra, mostra indefined ((
#5
Posted 07/07/2005, 23:30
Procure sempre declarar as ações em Frames específicos para elas, e não nos objetos, isso evita este tipo de falha.
Está meio confuso para mim o que você está tentando, então vou tentar explicar de uma forma clara e ampla.
O exemplo dos frames você fez e deu certo ok? Ótimo. Mas, se quisermos declarar uma variável dentro de um MovieClip e acessá-la a partir do _root?
Se partirmos do princípio que o MovieClip tem uma timeline independente do filme, teremos 2 timelines correto?
Como vimos em meu post anterior, para acessarmos uma variável de qualquer Timeline, declaramos ela como Global:
Outro exemplo. Digamos que você tenha uma função:
Frame 1:
Frame 2:
Desta forma, o valor pode ser acessado de qualquer lugar da Timeline, dentro de outra função talvez?
Isso tudo tem um custo, uma variável Local persistirá na RAM somente enquanto estiver sendo usada, uma variável de Timeline persistirá até que o objeto a qual ela pertence seja removido (delete obj), e uma variável Global, persistirá até que o filme seja finalizado. Por isso, deve-se tomar cuidado ao usar variáveis de Timeline e Globais para não sobrecarregar a RAM, o que é raro mas acontece.
Se desejarmos acessar a variável nome de dentro de um MovieClip?
Crie então um MovieClip vazio (Ctrl + F8), e em seu primeiro frame coloque:
A janela de saída exibirá undefined, porque a variável nome só acessível na Timeline _root. Para resolver, teríamos que declara a variável como _global no _root:
Agora sim, ela exibirá o valor Mozart duas vezes na janela de saída.
No seu caso, você declarou a variável diretamente no objeto, e isso impossibilita o Flash de acessar a variável, mesmo ela sendo Global.
Espero que tenha ficado claro. Procure sempre dar nomes de instâncias a seus objetos, e a criar o código em frames (vazios) específicos para isso.
Abraço
Está meio confuso para mim o que você está tentando, então vou tentar explicar de uma forma clara e ampla.
O exemplo dos frames você fez e deu certo ok? Ótimo. Mas, se quisermos declarar uma variável dentro de um MovieClip e acessá-la a partir do _root?
Se partirmos do princípio que o MovieClip tem uma timeline independente do filme, teremos 2 timelines correto?
Como vimos em meu post anterior, para acessarmos uma variável de qualquer Timeline, declaramos ela como Global:
_global.nome = "Mozart";Digamos que a variável nome se encontra dentro de um MovieClip, e você deseja acessá-la a partir do _root. Uma vez que ela foi declarada como Global, ela é acessível de qualquer Timeline, então bastaria:
trace(nome);Isso vale também, no caso de filmes carregados externamente.
Outro exemplo. Digamos que você tenha uma função:
function mostraNome():Void{ var nome:String = "Mozart"; }O valor declarado dentro da função só pode ser usado no escopo dela, se tentarmos acessar ele de fora da função, não conseguiremos:
function meuNome():Void{ var nome:String = "Mozart"; trace(nome); // Retorna Mozart } meuNome(); // Retorna undefined trace(nome);Então, como poderíamos criar uma variável acessível de qualquer escopo nesta timeline?
Frame 1:
stop(); function meuNome():Void{ nome = "Mozart"; trace(nome); // Retorna Mozart gotoAndStop(2); } meuNome(); trace(nome); // Retorna Mozart
Frame 2:
trace(nome); // Retorna Mozart
Desta forma, o valor pode ser acessado de qualquer lugar da Timeline, dentro de outra função talvez?
function meuNome():Void{ nome = "Mozart"; trace(nome); // Retorna Mozart } function meuNome2():Void{ trace(nome); // Retorna Mozart } meuNome(); meuNome(2);
Isso tudo tem um custo, uma variável Local persistirá na RAM somente enquanto estiver sendo usada, uma variável de Timeline persistirá até que o objeto a qual ela pertence seja removido (delete obj), e uma variável Global, persistirá até que o filme seja finalizado. Por isso, deve-se tomar cuidado ao usar variáveis de Timeline e Globais para não sobrecarregar a RAM, o que é raro mas acontece.
Se desejarmos acessar a variável nome de dentro de um MovieClip?
Crie então um MovieClip vazio (Ctrl + F8), e em seu primeiro frame coloque:
trace(nome);Depois, volte para o _root, abra a biblioteca (Ctrl + L) e arraste o MC para o palco.
A janela de saída exibirá undefined, porque a variável nome só acessível na Timeline _root. Para resolver, teríamos que declara a variável como _global no _root:
function meuNome():Void{ _global.nome = "Mozart"; trace(nome); } meuNome();
Agora sim, ela exibirá o valor Mozart duas vezes na janela de saída.
No seu caso, você declarou a variável diretamente no objeto, e isso impossibilita o Flash de acessar a variável, mesmo ela sendo Global.
Espero que tenha ficado claro. Procure sempre dar nomes de instâncias a seus objetos, e a criar o código em frames (vazios) específicos para isso.
Abraço
Edição feita por: Sheepman, 07/07/2005, 23:55.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)