Ir para conteúdo

Arquivado

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

nakid.mkt

como fazer variaveis manterem seus valores fora dos onLoad=funcao(){}

Recommended Posts

Oi pessoal, tudo bem?

 

vamos lá:

 

como eu faço para usar algo que eu peguei com LoadVars fora do onLoad?

 

segue o exemplo:

 

_global.vetor_rec = new Array();var c = new LoadVars();c.onLoad = retornaValores;c.load("listaRecordistas.php");function retornaValores() {		 // Aqui eu passo as variaveis (recordistas) que eu peguei no listaRecordistas.php e passo para o array vetor_rec}trace(vetor_rec[indice]);

O código acima funciona muito bem. O probelma é que o o vetor_rec não conserva os valores adquiridos dentro da funcao retornaValeres() para fora dela. O trace fapa um indice qualquer, como mostrado na ultima linha do código retorna indefinido. se o trace estivesse dentro da funcao retornaValores(), ele retornaria o valor correto.

 

o mesmo ocorre com loadXML.

 

Como resolvo isso? devo então colocar todo o meu código dentro da funcao retornaValores()? até as outras funcoes e os onEnterFrame da vida?

 

Espero que tenha explicado bem.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é que ela só vai ter algum valor depois que a função onLoad for executada, por isso você não pode pega-lo logo após chama-la como você fez ali, o que você pode fazer é coloca esse codigo no 1º frame com um stop

 

 

stop()_global.vetor_rec = new Array();var c = new LoadVars();c.onLoad = retornaValores;c.load("listaRecordistas.php");function retornaValores() {	global.vetor_rec[0] = this.valor    _root.play()}

assim que retornaValores for chamada, você manda ir para o proximo frame quando ela ja tiver um valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso amigo, você pode simplificar, em vez de colocar a função retornaValores como uma função separada, já coloca ela entor do onLoad msm:

 

_global.vetor_rec = new Array();var c = new LoadVars();c.onLoad = function (sucess:Boolean) {		 // Aqui eu passo as variaveis (recordistas) que eu peguei no listaRecordistas.php e passo para o array vetor_rec}c.load("listaRecordistas.php");

Quando o flash chama um loadVars, as variáveis ficam armazenadas hirearquicamente (não sei se é essa a palavra..srsr), abaixo do objeto loadVars. Portanto, para acessar a variável "medalha" (por ex.) que você informou pelo php, você tem que referenciá-la assim:

 

c.medalha, ou se for dentro da função this.medalha

Agora, se você quiser que esteja acessível no filme inteiro, pode colocar suas variáveis na _root:

 

_root.medalha = this.medalha // se estiver na função_root.medalha = c.medalha // na timeline

Esepro ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é que ela só vai ter algum valor depois que a função onLoad for executada, por isso você não pode pega-lo logo após chama-la como você fez ali, o que você pode fazer é coloca esse codigo no 1º frame com um stop

stop()_global.vetor_rec = new Array();var c = new LoadVars();c.onLoad = retornaValores;c.load("listaRecordistas.php");function retornaValores() {	global.vetor_rec[0] = this.valor    _root.play()}
assim que retornaValores for chamada, você manda ir para o proximo frame quando ela ja tiver um valor
deu muito certo nao =/
this._lockroot = true;stop()_global.vetor_titulo = new Array();var retorno:LoadVars = new LoadVars();retorno.load("http://localhost/graticia/receitas.php?opcao=ultima");retorno.onLoad = function(ok) {	if (ok) {		intro.introducao.text = this.introducao;//		rectitulo = this.rectitulo;		_global.vetor_titulo[0] = this.rectitulo;		play()	}};trace(_global.vetor_titulo[0]);
ele continua soh enxergando dentro da funcao...ps: tentei sme o _global, com global soh como tava no codigo original, nao deu tambem

Compartilhar este post


Link para o post
Compartilhar em outros sites

você colocou o trace(_global.vetor_titulo[0]); no segundo frame??

Isso msm amigo, você tem que colocar o trace da variavel no segundo frame, pq de acordo com a ordem de leitura das actions, ele le todas as actions do frame, depois dá o load no teu loadVars, entende.. dae ele vai traçar a variavel antes de carregar os valores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você colocou o trace(_global.vetor_titulo[0]); no segundo frame??

Isso msm amigo, você tem que colocar o trace da variavel no segundo frame, pq de acordo com a ordem de leitura das actions, ele le todas as actions do frame, depois dá o load no teu loadVars, entende.. dae ele vai traçar a variavel antes de carregar os valores.
e como eu faço para ler no mesmo frame?quero fazer um loader com as imagens que vem do onload... (this.image)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você colocou o trace(_global.vetor_titulo[0]); no segundo frame??

Isso msm amigo, você tem que colocar o trace da variavel no segundo frame, pq de acordo com a ordem de leitura das actions, ele le todas as actions do frame, depois dá o load no teu loadVars, entende.. dae ele vai traçar a variavel antes de carregar os valores.
e como eu faço para ler no mesmo frame?quero fazer um loader com as imagens que vem do onload... (this.image)
Coloca as actions para carregar seu frame dentro do escopo do onLoad então.....se é que estou entendendo. Ou defina uma função externa e faça uma chamada a ela dentro do escopo do onLoad. O que não dá para fazer no msm frame é você utiliza a estrutura:
//definição das variaveis//função onload//chamada onload//utilização das variáveis do onload
PQ o flash interpretaria a estrutura acima da seguinte maneira:1º le as variaveis2º armazena a função de onLoad3º chama o load do arquivo4º faz a utilização das variaveis (no caso, ainda não exitem)5º executa os procedimentos do onLoad, assim que o arquivo estiver carregado.Bom, pelo menos até hj enquanto eu trabalhei com flash sempre percebi esse comportamento no carregamento de variáveis no flash.Vlw??

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.