Ir para conteúdo
Fórum Script Brasil
  • 0

Flash "quebrar" variável até a vírgula


plizot

Pergunta

Boa Tarde, tenho uma galeria em flash que pega as fotos via xml. Esses xmls são gerados por um arquivo php, o problema é que se eu criar uma nova galeria no sistema, vou ter q abrir o .fla e indicar o caminho do arquivo e o nome da galeria, e então gerar o swf.

Estou tentando fazer com esse processo seja automatizado.

O que eu consegui fazer ateh agora foi gerar um php que liste todos os xmls de uma determinada pasta e que o flash receba essa variavel da seguinte forma:

"gallery02.xml","gallery03.xml","gallery04.xml"
O problema é que o caminho dos arquivos é informado em um array, essa galeria interpreta o que esta digitado dentro dos parenteses da forma acima, ou seja, se estiver entre aspas duplas e separados por virgula ela cria automaticamente a nova galeria no combobox e carrega o xml correspondente. Tentei armazenar esse valor do php numa variavel e passar ela como parametro do array, mas o flash pega esses arquivos como se fosse um só, na hora que eu vou gerar ele diz que não encontrou o arquivo: "gallery02.xml","gallery03.xml","gallery04.xml".xml. O que eu preciso é que o flash interprete o que tem entre as aspas duplas e até a virgula isoladamente, talvez armazenando em um novo array, mas não sei por onde começar. o código da galeria é esse:
System.useCodepage = true
carregaDados = new LoadVars()
carregaDados.load("http://localhost/cadastro/diretorio.php") // php que imprime os xmls que estao em determinada pasta
carregaDados.onData = function(dados){
google = dados;
trace(google);

import mx.transitions.easing.*;
var photo_filename:Array = new Array();
var photo_thumbnail:Array = new Array();
var photo_description:Array = new Array();
var photo_cores:Array = new Array();
var gallery_name:Array = new Array("COLEÇÃO 2009","COLEÇÃO 2010"); //nome da galeria, que vai aparecer no combobox
var gallery_file:Array = new Array();
var no_of_gallery:Number = gallery_name.length;
var folder:String = "../../photos/";
var total:Number;
var g:Number = 0;
var i:Number = 0;
var j:Number = 0;
var k:Number = 0;
var p:Number = 0;
var border_size:Number = 0;
var scrolling_speed:Number = 0.15; // 0.00 to 1.00
var cv:Number = 0;
var cv_old:Number = 0;
var onDrag:Boolean;
var xml:XML = new XML();
sub_button._visible = false;
tn_area._visible = false;
stop();

cb_categorias.setStyle("backgroundColor","0x413D30");
cb_categorias.setStyle("borderColor","0x413D30");
cb_categorias.setStyle("scrollTrackColor","0x413D30"); 
cb_categorias.setStyle("borderStyle", "none");
cb_categorias.setStyle("textSelectedColor", "0x413D30");
cb_categorias.setStyle("rollOverColor", "0xffffff");
cb_categorias.setStyle("selectionColor", "0xffffff");
cb_categorias.setStyle("color","0xffffff");
cb_categorias.setStyle("disabledColor","0x413D30");
cb_categorias.setStyle("fontFamily","Arial");
cb_categorias.setStyle("fontSize","11");
cb_categorias.setStyle("highlightColor","0x413D30");
cb_categorias.setStyle("marginLeft","15");
cb_categorias.setStyle("marginRight","5");
cb_categorias.setStyle("openDuration", 800);
cb_categorias.setStyle("openEasing", Bounce.easeOut);

cb_categorias.rowCount = 5;


for( i = 0; i < no_of_gallery; i++ ) // ao selecionar outra opção no combo, troca de galeria
{
    
    
    sub_button.duplicateMovieClip("sub_button" + i, i);
    this["sub_button" + i]._x = sub_button._x;
    this["sub_button" + i]._y = sub_button._y + (sub_button._height) * i;
    this["sub_button" + i].label_txt = gallery_name[i];
    this["sub_button" + i].no = i;
    cb_categorias.addItem(gallery_name[i],( gallery_file[i]) );
    
    var pular:Object = new Object();

pular.change = function(){

xml.load(cb_categorias.value);
xml.ignoreWhite = true;

}

cb_categorias.addEventListener("change", pular);

    
}




changeGallery(0);    
xml.onLoad = function() // carrega novo xml
{    
    for( i = 0; i < total; i++ )
        removeMovieClip(tn_group["tn"+i]);
        
    tn_group.tn._visible = false;
    var nodes = this.firstChild.childNodes;
    total = nodes.length;
    //trace(xml.firstChild.attributes.name);
    gallery_name[i] = xml.firstChild.attributes.name;
    for( i = 0; i < total; i++)
    {
        photo_thumbnail[i] = nodes[i].attributes.thumbnail;
        photo_description[i] = nodes[i].attributes.description;
        photo_cores[i] = nodes[i].attributes.cores;
        photo_filename[i] = nodes[i].attributes.filename;
        
        
    }
    j = k = p = 0;
    g++;
    create_tn();
    scroller();
    play();
}
    
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá plizot ^_^

Sua dúvida imagino ser bem fácil

Bolei 1 exemplinho com a sua string;

Vamos lá

Tudo o que precisamos é de uma String que é o que você recebe do PHP;

Vamos imaginá-la como "gallery02.xml","gallery03.xml","gallery04.xml";

Resumindo nossa declaração:

var meuArquivo:String = '"gallery02.xml","gallery03.xml","gallery04.xml"';
Temos ai uma string inteira com Aspas, virgulas e o que mais tiveres :) Nosso amigão flash já tem uma boa função com relação a Strings chamada "split" a mesma que conhecemos do php :) Melhorando nossa declaração para comportar o futuro programa:
var meuArquivo:String = '"gallery02.xml","gallery03.xml","gallery04.xml"';
var Recorte:Array = new Array();
var i:Number=0;
Temos agora uma Array que vai receber as separações da String dividida e uma variável de contagem para for, while etc... Fiz uma pequena verificação para saber se veio algo pela string e enfim para ele printar somente os valores que nós queremos:
if(meuArquivo.length <= 0 ){ //Se o arquivo tiver vazio

    trace("Vazio");

}else{

Recorte = meuArquivo.split('"'); // Vamos remover todas as Aspas

while(i<Recorte.length){ //Mapear toda a Array

i++;

if(Recorte[i]!="," && Recorte[i]!=" " && Recorte[i]!= undefined && Recorte[i]!= ''){ //A grande verificação, não queremos Null, nem Undefined nem Espaços brancos nem Vírgulas então todos serão ignorados;

trace(Recorte[i]); //Mostrará o pedaço do array contendo o seu xml corretamente :D

}
}
}
No meu exemplo eu apenas os printei com ot race, pra você usá-los tera de atribui-los a uma Array, e eles ocuparão seus reespectivos lugares; Imaginando uma nova array na declaração "var myArray:Array = new Array();" Trocamos "trace(Recorte);" por:
myArray.push(Recorte[i]);

Bom é simples assim :)

Espero ter ajudado

Abraços !

Pooh

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...