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