Ir para conteúdo

POWERED BY:

Arquivado

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

O Ilusionista

Exportar valor de uma função

Recommended Posts

Fala pessoal, beleza?Estou criando um galeria em AS totalmente dinâmica, que conta quantos arquivos você tem numa pasta e faz todo o resto (carregar thumbnails, swf) sozinho. Para isso, estou precisando de uma pequena ajuda.Vejam o código abaixo:

function enviar() {	envia = new LoadVars();	envia.sendAndLoad("teste.php", envia, "GET");		envia.onLoad = function() 	{		quanto = envia.resposta;		_parent.qtd = quanto;		_parent.quantia = quanto;		}}

A variável "quanto" guarda o número de arquivos que o PHP conta em um diretório. Isso funciona. Mas preciso que esta variável "quanto" possa ser acessada FORA da função:

for (var q:Number=0;q<=quanto;q++){

Só que o "quanto" não está sendo lido pelo for, o que está causando um loop infinito no for e travando o flash. Como posso exportar esta variável "quanto" para fora a Função? Return?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem algum arquivo na pasta? pq se o resultado da consulta retornar 0 ele trava o flash msmo...se os 2 códigos q você passou estão na msma timeline é para ele manter o valor sem problemas!Maaas.. nao se esqueça que você só pode executar o for depois que o php estiver carregado.. portanto:carregou = function() { for (var q:Number=0;q<=quanto;q++){ blablabla }};function enviar() { envia = new LoadVars(); envia.sendAndLoad("teste.php", envia, "GET"); envia.onLoad = function() { quanto = envia.resposta; _parent.qtd = quanto; _parent.quantia = quanto; carregou(); }}

Compartilhar este post


Link para o post
Compartilhar em outros sites

declara a variavel fora da função

 

var quantofunction enviar() {envia = new LoadVars();envia.sendAndLoad("teste.php", envia, "GET");envia.onLoad = function() {_root.quanto = envia.resposta;_parent.qtd = quanto;_parent.quantia = quanto;}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eder: eu já havia feito isso:

 

var posY:Number = myClip._y;var largura:Number = myClip._width;myClip._alpha =0;var quantosfunction enviar() {	envia = new LoadVars();	envia.sendAndLoad("teste.php", envia, "GET");		envia.onLoad = function() 	{		quantos = envia.resposta;		_parent.qtd = quanto;				}}enviar();

e mesmo assim tráva.

 

 

Comunication: Valeu, cara agora funciona. Mas para testar, eu tenho que publicar o arquivo e ver no browser. Se eu CTRL+ENTER ele tráva o flash :)

 

O código está quase completo...só falta a pior parte: ele pegar esta var "quanto" e criar uma array com um número de valores x quanto. Assim:

 

Se o quanto for 30:

 

A array posicioes deve ter 30 posicoes, e cada posição desta deve ser a variavel "largura" (que pega a largura do mc)+seu indice.

 

Explicando:

 

quando a posicao for 1, o primeiro indice da array deve valer "largura".

quando a posicao for 2, o SEGUNDO indice deve valer "largura+largura"

 

e assim vai.

 

Alguem tem idéia de como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como posso explicar isso de uma maneira melhor?

 

é assim:

 

-o php lê quantos arquivos tem no diretorio e retorna isso como a variavel quanto. Digamos que ele tenha lido 12 arquivos

- o flash pega essa variavel quanto e duplica "quanto" mcs (no caso, 12).

- daí eu preciso definir uma array com "quanto" indices, ou seja, 12.

- a largura do MC é obtida atraves de uma variavel "largura". No meu caso, vale 100.

- Então cada indice deve valer o seu número + a largura, ou seja, os 100 pixels.

 

esta é a array que utilizo atualmente:

 

// Número de posições . Atenção, o "0" conta!max = 1; // número de posições - 1posicoes = Array("450", "178", "-94", "-366");aonde_esta = posicoes[0];invfren.onRelease = function() {	for (i=0; i<posicoes.length; i++) {		if (aonde_esta == posicoes[i] and aonde_esta != posicoes[max]) {			aonde_esta = posicoes[i+1];			//trace(posicoes[i+1]);			menumini.slideTo(posicoes[i+1],"",1,"easeOutExpo");			break;		}	}};invtras.onRelease = function() {	for (i=0; i<posicoes.length; i++) {		if (aonde_esta == posicoes[i] and aonde_esta != posicoes[0]) {			aonde_esta = posicoes[i-1];			//trace(posicoes[i-1]);			menumini.slideTo(posicoes[i-1],"",1,"easeOutExpo");			break;		}	}};

pegou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

dexa eu ver se entendi ....

o q você está qrendo é que após o php te dizer q existem X arquivos de imagem na pasta, o flash carregue elas uma do lado da outra, com uma largura de 100px cada? assim como eu fiz nesse site: http://www.palmaonline.com.br (entre na galeria de fotos)

 

é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é isso e mais um pouco. pq os thumbnails são organizados em duas fileiras:

 

0 2 4

1 3 5

 

Ou seja...as pares ficam encima, e as ímpares ficam embaixo. Tudo isso controlável por um tween.

 

Para você ter uma ideia, acesse http://www.impressinho.com.br/projeto/ clique em coleção depois em menino. Entre com o login teste e senha teste e você verá que todas as peças são carregadas dinamicamente.

 

Só que eu quero criar estes quadrados dinamicamente ao inves de fazer um ao lado do outro, saca?

 

alia, muito legal este site seu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

intaum cara, eh igual no meu site da palma então... você viu a seção de fotos? vê lah, pq se for isso mesmo já te falo como foi que eu fiz!a unica diferença lah eh q ele coloca as fotos assim:1 2 3 4 56 7 8 9 10mas pode ser como você quiser, só mudar a programação!

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.