XML-Struktur an externe Swf übergeben

OTurner

Grünschnabel
Guten Morgen,
ich habe mal eine Frage. Ist es möglich eine XML struktur in einen Haupfilm zu laden, diese in variable umzuändern und diese variablen dann an eine externe swf weiterzugeben
und wenn ja, wie ist das denn möglich...da stosse ich an meine Grenzen.
Bitte um Hilfe.
Ich arbeite mit AS 3.
 
Hi,

was meinst du mit externer swf?
Eine swf die zur laufzeit in den Hautpfilm geladen wird oder eine swf die nichts mit dem eigentlichen Film zu tun hat und zB. auf einer anderen domain liegt?

Mehr Infos....
 
ne ne sie wird nicht aus einer anderen Domain geladen, sie wird zur Laufzeit der main.swf geladen.
Also ich kann ja mal mein Script darstellen, wie ich es bis jetzt gemacht habe, aber irgendwo liegt da drin ein Fehler..
PHP:
var tor = [];
var kalender = [];
var aktTag = [];
var gutscheine = [];
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("adventskalender.php.xml"));
loader.addEventListener(Event.COMPLETE, ladeXML);
function ladeXML(evt:Event) {
	var xml_dokument:XML = new XML(evt.target.data);
	xml_dokument.ignoreWhitespace = true;
	xml_dokument.ignoreComments = true;


	
for each (var knoten:XML in xml_dokument.aktTag) {
		trace("lade aktTag mit  " +knoten.text());
}
for each (var knoten2:XML in xml_dokument.gutscheine.tor) {
	  trace("lade tor mit " + knoten2.@id );
	trace("lade inhalt "+ knoten2.inhalt.@typ);
      var tor = new Object();
      tor.id = knoten2.@id;
      tor.inhalt = knoten2.inhalt.text();
      tor.typ = knoten2.inhalt.@typ;
      gutscheine[gutscheine.length] = tor;
   }
   

var externeSWF:MovieClip;

door1_mc.addEventListener(MouseEvent.CLICK, pruefen);
var laden:Loader = new Loader();
function pruefen( event:Event ):void{ 
     if (knoten == "1")  {
laden.contentLoaderInfo.addEventListener( Event.COMPLETE, listener );
laden.load( new URLRequest( "tor_1_new.swf" ) ); 
	

} 

function listener( event:Event ):void{
    this.externeSWF = laden.content as MovieClip;
    this.externesSWF.addXMLData(xml_dokument);
    addChildAt( this.externeSWF, 29 );
  
}     
}
}

und im externen habe ich bis jetzt stehen..
PHP:
function addXMLData(value:Array):void {
   trace( value );
}

kann jemand was damit anfangen?
 
Du übergibst der Funktion ein Objekt vom datentyp XML obwohl es ein Array will.
PHP:
 this.externesSWF.addXMLData(xml_dokument);

...und jetzt seh ich's gerade (nächste mal bitten den code besser formatieren) das du die listener in der Funktion ladeXML verschachtelt hast.
Schreibe diese außerhalb.
 
Zuletzt bearbeitet:
Entweder legst du fest welchen datentyp dein Argument habe soll und gibst auch ein Objekt von diesem Datentyp (Array , XML, ...)an die Funktion oder du kennzeichnest ein dynamischen Datentyp mit * - (strikte typisierung ist aber vorzuziehen)

PHP:
function addXMLData(value:*):void {
   trace( value );
}
 
cool, danke für die Aufklärung. Werde mich, wenn ich das alles hier geschafft habe, mich intensive mit strikter typisierung beschäftigen. Ich springe zur Zeit immer von einem Thema zum nächsten ohne mich dabei intensiv mit zu beschäftigen, da ist es gut, wenn man jemanden mal findet, der einem das erklärt. aber ich werde das alles nochmal in ruhe studieren. bücher und videomaterial ist da. nur die Zeit fehlt gerade.

wie lese ich denn dann die geladene XML aus dem Hauptfilm im externen Movie aus sodass ich z.B. in einem dynamischen Textfeld einen wert eingetragen bekomme, der in einem XML knoten steht
 
Du hast ja deine XML schon geparsed und in einem Array gutscheine abgelegt:

So könntest du darauf zugreifen:
meinTextFeld.text = gutscheine[0].inhalt;
 
Zuletzt bearbeitet:
Hey du danke, dass habe ich jetzt hinbekommen.
Hier mal das Script vielleicht kann es jemand anderes auch gebrauchen
PHP:
var tor = [];
var kalender = [];
var aktTag = [];
var gutscheine = [];
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("adventskalender.php.xml"));
loader.addEventListener(Event.COMPLETE, ladeXML);
function ladeXML(evt:Event) {
	var xml_dokument:XML = new XML(evt.target.data);
	xml_dokument.ignoreWhitespace = true;
	xml_dokument.ignoreComments = true;


	
for each (var knoten:XML in xml_dokument.aktTag) {
		trace("lade aktTag mit  " +knoten.text());
}
for each (var knoten2:XML in xml_dokument.gutscheine.tor) {
	  trace("lade tor mit " + knoten2 );
	trace("lade inhalt "+ knoten2.inhalt.@typ);
      var tor = new Object();
      tor.id = knoten2.@id;
      tor.inhalt = knoten2.inhalt.text();
      tor.typ = knoten2.inhalt.@typ;
      gutscheine[gutscheine.length] = tor; 
   }
   //xml einlesen und die knoten aus der XML ansprechen und ausgeben
   
   

var externeSWF:MovieClip;

door1_mc.addEventListener(MouseEvent.CLICK, pruefen);
var laden:Loader = new Loader();
function pruefen( event:Event ):void{ 
     if (knoten == "1")  {  // wenn der knoten "aktTag" der xml die zeichenkette "1" besitzt darf das törchen geöffnet werden
laden.contentLoaderInfo.addEventListener( Event.COMPLETE, listener ); 
laden.load( new URLRequest( "tor_1_new.swf" ) ); 
	//addChildAt(laden, 28);
    close_btn.visible = true;
} 

function listener( event:Event ):void{
    this.externesSWF = laden.content as MovieClip;
    this.externesSWF.addXMLData(gutscheine);
    addChildAt( this.externesSWF, 28 );
}
so und in der externen swf habe ich im script folgendes stehen
PHP:
var gutscheine:Array;
function addXMLData(value:Array):void {
	gutscheine = value;
	ladeTor(2);
}

function ladeTor(nr:int):void {
 for each ( var tor:Object in gutscheine )
 {
      trace( "Tor ID: ", tor.id );
      trace( "Tor Typ: ", tor.typ );
      trace( "Tor Inhalt: ", tor.inhalt );
      trace( "------------------------------\n" );
   if (tor.id == 2)
   {
     if (tor.typ == "drucken") {
	 drucken_txt.text = tor.inhalt;
	 teilnehmen_btn.visible = true;
	 
	 }else if (tor.typ == "tagesverlosung") {
	 tagesverlosung_txt.text = tor.inhalt;
	 tagesverlosung_btn.visible = true;
	 } else if(tor.typ == "texteingabe") {
	 gutscheine_txt.text = tor.inhalt;
	 verlosung_btn.visible = true;
	 }
	 break;
   }
 }
}
meine Frage lautet jetzt, da meine externe Swf aus mehreren Frames besteht, wie kann das array "gutscheine" denn auf ein anderes Frame im gleichen Film übergeben, oder bestimmte Teile des Arrays?
 

Neue Beiträge

Zurück