View Single Post

  #3 (permalink)  
Old 15-07-08, 09:25
Nerlaleph Nerlaleph is offline
Junior Member
 
Join Date: Jan 2008
Posts: 27
Rep Power: 0
Nerlaleph is on a distinguished road
Send a message via MSN to Nerlaleph
Re: Testi html dentro XML

Voglio implementare una mia prova con questo tuo esempio. Il mio progetto prevede una mini gallery di foto, caricate con swf esterni e una parte testuale. Questo è il codice:

Code:
package
{    
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.net.navigateToURL;
    import flash.events.*;
    import flash.ui.ContextMenu;
    import flash.ui.ContextMenuItem;    
    import flash.text.TextField;    
    import flash.xml.*;
    
    
    public class storiaAS3 extends MovieClip
    {
        private var btnArray:Array;
        private var urlArray:Array;
        private var pixArray:Array;
        private var loader:Loader;    
        private var swf:String;
        private var pix:MovieClip;
        private var id:int=0;
        private var i:int=0;    //contatore per btnArray
        private var p:int=0;    //contatore per pixArray
        
        public function storiaAS3()
        {
            init();
            this.loadXML();
        }
        
        public function init():void
        {
            preloader_mc.visible=false;        
            
            //Popolazione Array galleria immagini e link
            urlArray = new Array('photo1.swf', 
                                 'photo2.swf',
                                 'photo3.swf', 
                                 'photo4.swf');            
            btnArray = new Array(menu_mc.btn1_mc, menu_mc.btn2_mc, 
                                 menu_mc.btn3_mc, menu_mc.btn4_mc);
            pixArray = new Array(pix_mc.pix_1_mc, pix_mc.pix_2_mc, 
                                 pix_mc.pix_3_mc, pix_mc.pix_4_mc);            
            openSWF();
            caricaSWF1();
        }
        
        private function loadXML():void
        {
            //Gestione txt tramite xml
            var loader:URLLoader=new URLLoader();
            loader.addEventListener(Event.COMPLETE,completeHandler);
        
            var request:URLRequest=new URLRequest('testo.xml');
            try 
            {
                loader.load(request);
            } 
            catch(error:Error) 
            {
                trace('Unable to load requested document.');
            }    
        }
    
        private function completeHandler(event:Event):void
        {
            var loader:URLLoader=URLLoader(event.target);
            var result:XML=new XML(loader.data);
            var myXML:XMLDocument=new XMLDocument();
            myXML.ignoreWhite=true;
            myXML.parseXML(result.toXMLString());
            var node:XMLNode=myXML.firstChild;
            trace(node);
            txt_mc.txt.htmlText=node.firstChild.firstChild.nodeValue;
        }        
                
        private function openSWF():void
        {
            for(var i:int=0;i < btnArray.length;i++)
            {
                btnArray[i].id=i;
                btnArray[i].addEventListener(MouseEvent.MOUSE_DOWN,cambiaSezione);
            }
            for (var p:int=0;p < pixArray.length;p++)
            {
                pixArray[p].visible=false;
            }
        }
        
        private function caricaSWF1():void
        {
            swf=urlArray[0];
            var request:URLRequest=new URLRequest(swf);
            loader=new Loader();
            initListeners(loader.contentLoaderInfo);
            loader.load(request);
            loader.x=314;
            loader.y=0;
            id=0;
        }        
        
        private function cambiaSezione(m:MouseEvent):void
        {
            id=m.target.parent.id;            
            loader.unload();
            removeChild(loader);
            rimuoviListeners(loader.contentLoaderInfo);
            caricaSezione(m.target.parent.id);
        }        
        
        private function caricaSezione(n:int):void
        {
            swf=urlArray[id];
            pix=pixArray[id];
            pix.visible=true;
            var request:URLRequest=new URLRequest(swf);
            loader=new Loader();
            initListeners(loader.contentLoaderInfo);
            loader.load(request);
            loader.x=314;
            loader.y=0;
        }

        private function initListeners(dispatcher:IEventDispatcher):void 
        {
            dispatcher.addEventListener(Event.OPEN,inizia);
            dispatcher.addEventListener(ProgressEvent.PROGRESS,inCaricamento);
            dispatcher.addEventListener(Event.COMPLETE,completato);
        }
        
        private function rimuoviListeners(dispatcher:IEventDispatcher):void 
        {
            dispatcher.removeEventListener(Event.OPEN,inizia);
            dispatcher.removeEventListener(ProgressEvent.PROGRESS,inCaricamento);
            dispatcher.removeEventListener(Event.COMPLETE,completato);
        }
        private function inizia(event:Event):void 
        {
            preloader_mc.visible=true;
        }
        private function inCaricamento(event:ProgressEvent):void 
        {
            var n:Number = event.bytesLoaded/event.bytesTotal;
            n = Math.round(n * 100);
            preloader_mc.progress_txt.text=n.toString()+' %';
            preloader_mc.fill_mc.rotation=n*10.8;        
        }
        
        private function completato(event:Event):void 
        {
            preloader_mc.visible=false;
            addChild(loader);
            swappa();

            switch (id)
            {
                case 0:
                pixArray[0].visible=true;
                pixArray[1].visible=false;
                pixArray[2].visible=false;
                pixArray[3].visible=false;
                break;
                case 1:
                pixArray[1].visible=true;
                pixArray[0].visible=false;
                pixArray[2].visible=false;
                pixArray[3].visible=false;                
                break;
                case 2:
                pixArray[2].visible=true;
                pixArray[1].visible=false;
                pixArray[0].visible=false;
                pixArray[3].visible=false;                
                break;
                case 3:
                pixArray[3].visible=true;
                pixArray[1].visible=false;
                pixArray[2].visible=false;
                pixArray[0].visible=false;                
                break;
            }                
        }
        private function swappa():void
        {
            swapChildren(loader,menu_mc);
            swapChildren(menu_mc,pix_mc);
        }
        
    }
}
Continuo a ricevere questo errore:

Code:
TypeError: Error #2007: Il valore del parametro text deve essere diverso da null.
    at flash.text::TextField/set htmlText()
    at storiaAS3/completeHandler()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()
Il trace su node mi indica che il file xml viene letto correttamente .. non riesco a capire che diavolo gli prenda ... .
Ogni aiuto è benvenuto, saluti
Davide
Reply With Quote