Jump to content
Fórum Script Brasil
  • 0

Tentar até aprender


Carlos Rocha

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...