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

Tentar até aprender


Carlos Rocha

Pergunta

Pessoal.

Boa Tarde.

tenho a classe abaixo para carregar um xml (de tanto observar, cheguei a isso ai):

package  classes
{
    import flash.events.*;
    import flash.net.*;
    
    public class carregaXML extends EventDispatcher
    {
        private var xmlList:XMLList;

        public function carregaXML(pXMLURL:String):void
        {
            // constructor code
            var xmlURLRequest:URLRequest = new URLRequest(pXMLURL);
            var xmlURLLoader :URLLoader  = new URLLoader(xmlURLRequest);
            
            xmlURLLoader.addEventListener(Event.COMPLETE, xmlData);
        }
        
        private function xmlData(evt:Event):void
        {
            evt.currentTarget.removeEventListener(Event.COMPLETE, xmlData);
            
            var xml:XML = new XML(evt.currentTarget.data);
            
            xmlList=xml.*;
            dispatchEvent(new Event(Event.COMPLETE));
        }
        public function get Lista():XMLList
        {
            return xmlList;
        }
    }
    
}
No meu fla, tenho o seguinte as:
import classes.carregaXML;

var xml:carregaXML = new carregaXML('imagens.xml');

xml.addEventListener(Event.COMPLETE, mostraImagens);

function mostraImagens(evt:Event):void
{
    trace(evt.currentTarget.Lista);
    trace(evt.currentTarget.Lista.length());
    
    
}
Isso me retorna o xml como ele é:
<imagens>
  <endereco>"../../img/treinamento/treinamento_Page_01.jpg"</endereco>
  <endereco>"../../img/treinamento/treinamento_Page_02.jpg"</endereco>
  <endereco>"../../img/treinamento/treinamento_Page_03.jpg"</endereco>
</imagens>

E o numeros de tags<endereco> que ele tem em trace.

O que eu quero agora é adicionar essas imagens ao palco e colocar um preloader para o carregamento de cada uma.

Preciso de ideias de como fazer.

Obriago e desculpe a falta de conhecimento.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Consegui do jeito abaixo exibir no MC as imagens em sequencia de uma pasta via xml.

Agora, gostaria de saber como alterar o tamanho dessas imagens antes de lançar no palco. Elas estão pequenas..

stop();

voltar.addEventListener(MouseEvent.CLICK, volta);

CarregaScroll(scrollbar4,scrollbar4.barra_scroll4,scrollbar4.scroller4,imagesContainer,mascara4);

import classes.ImagemLoader;

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Loader;
import flash.display.Sprite;

var totalBytes:Number = 0; //valor dos bytes total de TODAS as imagens
var loadedBytes:Number = 0; //valor actual dos bytes carregados de TODAS as imagens
var prevLoadedBytes:Number = 0; //ira servir para determinar o valor de loadedBytes
var loaderCounter:Number = 0;  //referencia para determinar o valor de totalBytes

var imagesData:XML;
var imgCounter:int = 0;
var loader:URLLoader = new URLLoader();
/*var imagesContainer:MovieClip = new MovieClip();


imagesContainer.x=320;
imagesContainer.y=10;
imagesContainer.width=620;
imagesContainer.height=300;*/

loader.addEventListener(Event.COMPLETE, dataLoadedHandler);
loader.load(new URLRequest("treinamento.xml"));

imagesContainer.visible = false;


function dataLoadedHandler(e:Event):void {
        
        imagesData = new XML(e.target.data);
        
        var imageLoader:Loader;

        totalpaginas.text="Este treinamento possui "+imagesData.img.length()+" Páginas.";
        aguarde.text="Por favor, aguarde o carregamento de todas elas!";
        
        for(var i:uint; i < imagesData.img.length(); i++)
        {
                imageLoader = new Loader();
                imagesContainer.addChild(imageLoader);
                imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando);
                imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
                imageLoader.load(new URLRequest(imagesData.img[i].@path));
        }
}


function carregando(evt:ProgressEvent):void {
        
        loaderCounter++;
        
        if(loaderCounter <= imagesData.img.length()) {
                totalBytes += evt.bytesTotal;
                return;
        }

        loadedBytes += (evt.bytesLoaded - prevLoadedBytes);
                
        if(evt.bytesLoaded == evt.bytesTotal) prevLoadedBytes = 0;
        else prevLoadedBytes = evt.bytesLoaded;

        var perc:Number = loadedBytes / totalBytes;
        barra_treina.scaleX=perc;
        percentual.text=Math.floor(perc*100)+"%";
}
function imageLoaded(e:Event):void {
        
        imgCounter++;
        
        if(imgCounter == imagesData.img.length()) {             
                
                for( var i:uint; i < imagesData.img.length(); i++) {
                        
                        if(i > 0){
                                
                                imagesContainer.getChildAt(i).y = imagesContainer.getChildAt(i-1).y + imagesContainer.getChildAt(i-1).height;
                        }
                }
                
               
                imagesContainer.visible = true;
                totalpaginas.visible=false;
                aguarde.visible=false;
                percentual.visible=false;
                barra_treina.visible=false;
                fundo_barra.visible=false;
        }
}
Ah! a classe tambem mudou.
package classes
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;

 public class ImagemLoader extends Sprite
 {
   private var imgLoader:Loader;

   public function ImagemLoader(pImgURL:String):void
   {
     var imgReq:URLRequest = new URLRequest(pImgURL);
     imgLoader = new Loader();
     imgLoader.load(imgReq);

     imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, adicionaImagem);
   }

   private function adicionaImagem(evt:Event):void
   {
     addChild(imgLoader);
     evt.currentTarget.removeEventListener(Event.COMPLETE, adicionaImagem);
     dispatchEvent(new Event(Event.COMPLETE));
   }
 }
}

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,2k
    • Posts
      652k
×
×
  • Criar Novo...