Pastor Pixel Tipps Tutorial Anleitungen Hilfe

XML und Flash AS3

Das Verarbeiten von XML-Daten in AS3 ist meiner Ansicht nach einfacher, als in AS2. Hier ein einfaches Beispiel:
XML bei Adobe

 

xml_1.sfw

Zugriff auf XML Elemente

access.swf

XML ist eine Datenhierachie. Der Text innerhalb eines XML Elements ist ein Node (Knoten) in der XML Hierachie. Wenn man im obigen Beispiel mittels xmlMusic.Song[1].Artist; auf Nicole zugreift, so wird kein String zurückgegeben sondern ein XML Objekt und zwar ein Node (Knoten) vom Typ text.

Übrigens, diese Schreibweise ist nur möglich, weil es nur ein Artist Element an dieser Stelle der Hierachie gibt. Ansonsten müsste es folgendermaßen heißen:

xmlMusic.Song[1].Artist[0];

xmlMusic.*[1].Artist.parent(); //<Song published=... ....</Song>
xmlMusic.*[1].Artist.nodeKind(); //element
xmlMusic.*[1].Artist.toString(); //Nicole

Wenn man auf den Inhalt eines textNodes als String zugreifen will, ist es nicht erforderlich explizit toString() aufzurufen, denn ActionScript ruft toString() automatisch auf, wenn ein nicht-String eingesetzt wurde, wo ein String erwartet wird.

Die folgenden Dinge sind zu beachten

 

Kommentare und Anweisungen

Innerhalb einer XML Struktur kann man Kommentare und Befehle einfügen.
Kommentar:

<!-- Kommentar --!>

Anweisung/ processing instruction:

<? irgendeine Anweisung ?>

Man kann auf diese Kommentare und Befehle zugreifen. Vorraussetzung ist, dass folgende globale boolsche Werte auf false gesetzt werden:

XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;

Dann kann man innerhalb der XML Struktur auf die Kommentare und Anweisungen folgendermaßen zugreifen:

trace(myXML.comments()[0]);
trace(myXML.comments()[1]);
trace(myXML.processingInstructions()[0]);

 

for - / for each in - Schleife

Hier werden 2 Möglichkeiten vorgestellt eine XML Datei zu laden und diese Daten in ein Array oder Objekt zu packen. Als erstes über eine for Schleife und als zweite, wesentlich sinnvollere Methode, über eine for each in Schleife.

Die XML Datei sieht so aus:

<?xml version="1.0" encoding="utf-8"?>

<bilder>

<bild id="1">

<dateiname>img/img_01.jpg</dateiname>
<blende>8.0</blende>
<belichtung>1/250</belichtung>
<iso>200</iso>
<datum>11.11.2011</datum>

</bild>

<bild id="2">

<dateiname>img/img_02.jpg</dateiname>
<blende>5.0</blende>
<belichtung>1/250</belichtung>
<iso>200</iso>
<datum>11.11.2011</datum>

</bild>

<bild id="3">

<dateiname>img/img_03.jpg</dateiname>
<blende>4.0</blende>
<belichtung>1/250</belichtung>
<iso>200</iso>
<datum>11.11.2011</datum>
</bild>

<bild id="4">

<dateiname>img/img_04.jpg</dateiname>
<blende>7.0</blende>
<belichtung>1/250</belichtung>
<iso>200</iso>
<datum>11.11.2011</datum>
</bild>


</bilder>

for Schleife


var bilder:Array = new Array();

var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("bilder.xml"));
loader.addEventListener(Event.COMPLETE, parseXML);

function parseXML(evt:Event) {
	var xml_document:XML=new XML(evt.target.data);
	xml_document.ignoreWhitespace=true;
	for (var i:int=0; i < xml_document.bild.length(); i++) {
		
		var bild = new Object();
		bild.dateiname=xml_document.bild[i].dateiname.text();
		bild.blende=xml_document.bild[i].blende.text();
		bild.belichtung=xml_document.bild[i].belichtung.text();
		bild.iso=xml_document.bild[i].iso.text();
		bild.datum=xml_document.bild[i].datum.text();
		bilder[bilder.length]=bild;
	}
}

for each in

 


var bilder:Array = new Array();

var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("bilder.xml"));
loader.addEventListener(Event.COMPLETE, parseXML);

function parseXML(evt:Event) {
	var xml_document:XML=new XML(evt.target.data);
	xml_document.ignoreWhitespace=true;

	for each (var knoten:XML in xml_document.bild) {
		bilder.push(knoten);
	}

}

In beiden Varianten kann man auf folgende Weise auf das vierte Element des Arrays "bilder" zugreifen:

trace(bilder[3].dateiname);
trace(bilder[3].blende);
trace(bilder[3].belichtung);
trace(bilder[3].iso);
trace(bilder[3].datum);

Es ist jedoch nicht gleiche.

Hier lasse ich mir bei der for Schleife das vierte Element ausgeben

trace(bilder[3];

Es wird folgendes angezeigt:

[object Object]

Hier lasse ich mir bei der for-each-in-Schleife das vierte Element komplett ausgeben:

trace(bilder[3]);

Es wird folgendes angezeigt:

<bild id="4">
<dateiname>img/img_04.jpg</dateiname>
<blende>7.0</blende>
<belichtung>1/250</belichtung>
<iso>200</iso>
<datum>11.11.2011</datum>
</bild>

Man sieht dass im zweiten Beispiel die XML Struktur, daher könnte man auch auf folgende Weise auf das Element zugreifen:

bilder[3].dateiname.text();

Da alle Daten und die Struktur in XML schon vorhanden ist, macht es nicht wirklich Sinn, alles nochmal in einem Objekt nachzubauen. Wichtig ist ja nur, wie man auf die Daten zugreifen kann, um sie zu benutzen.

Hier ein paar Beispiele mit for-each-in Schleife

forEach.swf

appendChild

Mit appendChild kann man sich die XML Daten zusammenbauen. Die Aktion fügt den kompletten Baum eines XML Objekts zwischen das Wurzelelement eines anderen XML Objekts, welches appendChild aufruft. Alle weiteren appendChild Aufrufe fügen die XML Daten unten an. Selbstverständlich kann man den appendChild-Aufruf auch innerhalb eines untergeordneten Elements aufrufen.
a.bilder.appendChild(b);

 

var a:XML = ;
var b:XML = 
		1.jpg
		2.jpg
	;
	
var c:XML = Michael Albers;

a.appendChild(b);
a.appendChild(c);


trace(a);

Das sieht dann so aus.

<bildliste>
<bilder>
<bild id="1">1.jpg</bild>
<bild id="2">2.jpg</bild>
</bilder>
<autor>Michael Albers</autor>
</bildliste>

delete

Mit delete kann man XML Elemente löschen. In den folgenden Beispielen ist die folgenden XML Struktur immer die Ausgangssituation


var a:XML=<bildliste>
<bilder>
<bild id="1">1.jpg</bild>
<bild id="2">2.jpg</bild>
</bilder>
<autor>Michael Albers</autor>
</bildliste>;



 

delete a.bilder.bild[0];

<bildliste>
<bilder>
<bild id="2">2.jpg</bild>
</bilder>
<autor>Michael Albers</autor>
</bildliste>


 

delete a.bilder.bild.@id;

<bildliste>
<bilder>
<bild>1.jpg</bild>
<bild>2.jpg</bild>
</bilder>
<autor>Michael Albers</autor>
</bildliste>


 

delete a.bilder.bild;

<bildliste>
<bilder/>
<autor>Michael Albers</autor>
</bildliste>


Im letzten Beispiel bleibt das Element <bilder /> als alleinstehendes Tag erhalten.

CDATA Html Tags in XML

Will man html-Tags innerhalb von XML erhalten, so dass sie nicht als neue Knoten angesehen werden, kann man sie in CDATA einschließen.

var xmld:XML = <nachrichten><news><![CDATA[Hier ein <b>fetter</b> Text ]]></news></nachrichten>;
trace(xmld.news.text());//Hier ein <b>fetter</b> Text
anzeige.htmlText = xmld.news.text();

 

dynamische Werte in XML einbauen

Hier erstellen wir ein XML Objekt, wobei einige Werte aus Variablen stammen. Man bedient sich dazu der geschweiften Klammern.

Da die geschweiften Klammern gebraucht werden, um dynamische Inhalte darzustellen, dürfen geschweifte Klammern in einigen Teilen eines XML Literals nicht verwendet werden, stattdessen schreibt man:

&#x7B

&#x7D

Geschweifte Klammern können benutzt werden:

var imgUrl1:String="1.jpg";
var imgUrl2:String="2.jpg";

var a:XML=<bildliste>
<bilder>
<bild id="1">{imgUrl1}</bild>
<bild id="2">{imgUrl2}</bild>
</bilder>
</bildliste>

trace(a.toXMLString());

Die trace Ausgabe sieht so aus:

<bildliste>
<bilder>
<bild id="1">1.jpg</bild>
<bild id="2">2.jpg</bild>
</bilder>
</bildliste>

 

Bilder laden anhand der Daten einer XML-Datei

Hier werde ich jetzt anhand der nächsten Beispiele Schritt für Schritt erklären, wie man mehrere Bilder in einen MC lädt. Der MC könnte als Leiste mit Vorschaubildern dienen, daher die Namen der Klassendateien prevMovies.as Sämtliche Daten werden in einer externen XML-Datei gespeichert, z.B.: Die Titel der Bilder oder die URL der Bilder. In den ersten beiden Beispielen kommt die XML-Datei noch nicht zum Einsatz.

Bilder laden 1

Die Klasse erbt vom Typ Movieclip. Es werden 2 Bilder in das Objekt geladen. Das zweite Bild wird um 200 Pixel nach rechts versetzt.

bilderLaden1.swf

Actions der fla Datei

var gallery:PrevMovies1 = new PrevMovies1();
addChild(gallery);

Actions der as Datei

package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;

	public class PrevMovies1 extends MovieClip {
		public function PrevMovies1() {
			var request:URLRequest = new URLRequest("img/1.jpg");
			var ldr:Loader = new Loader();
			ldr.load(request);
			this.addChild(ldr);
			request = new URLRequest("img/2.jpg");
			ldr = new Loader();
			ldr.load(request);
			ldr.name="bild"+String(2);
			this.addChild(ldr);
			getChildByName("bild2").x=200;
			
		}
	}
}

Bilder laden 2

Hier werden mehrere Bilder mit einer For-Schleife geladen. In der Konstruktorfunktion ist ein Parameter hinzugekommen, der die Anzahl der zu ladenen Bilder festlegt.

bilderLaden2.swf

 

Actions der fla

var gallery:PrevMovies2 = new PrevMovies2(6);
addChild(gallery);

Actions der as

package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;

	public class PrevMovies2 extends MovieClip {
		private var request:URLRequest;
		private var ldr:Loader;
		public function PrevMovies2(anzahl:uint) {
			for (var i:uint=1; i<=anzahl; i++) {
				request = new URLRequest("img/"+String(i)+".jpg");
				ldr = new Loader();
				ldr.load(request);
				this.addChild(ldr);
				this.getChildAt(i-1).x=i*200-200;
			}
		}
	}
}

 

Bilder laden 3

Hier kommt jetzt das Laden der XML-Datei hinzu. Nachdem die XML-Datei geladen ist, werden die Bilder geladen. Die richtige Referenzierung ist hier etwas kniffelig.

bilderLaden3.swf

Die XML-Datei bilderliste.xml

<?xml version="1.0" encoding="utf-8"?>
<Bilderliste>
<Bild titel="Finn auf dem Balkon">img/1.jpg</Bild>
<Bild titel="Finn sitzend">img/2.jpg</Bild>
<Bild titel="Finn im Wald">img/3.jpg</Bild>
<Bild titel="Finn auf der Straße">img/4.jpg</Bild>
<Bild titel="Finn auf dem Sofa">img/5.jpg</Bild>
<Bild titel="Beagle">img/6.jpg</Bild>
<Bild titel="Der kleine Finn">img/7.jpg</Bild>
<Bild titel="Finn im Feld">img/8.jpg</Bild>

</Bilderliste>

Actions der as

package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;

	public class PrevMovies3 extends MovieClip {
		private var request:URLRequest;
		private var ldr:Loader;

		public function PrevMovies3() {
			var externalXML:XML;
			var loader:URLLoader = new URLLoader();
			var request:URLRequest = new URLRequest("bilderliste.xml");
			loader.load(request);
			loader.addEventListener(Event.COMPLETE, onComplete);
			function onComplete(event:Event):void {
				//var loader:URLLoader = event.target as URLLoader;
				if (loader != null) {
					externalXML = new XML(loader.data);
					for (var i:uint=0; i<externalXML.children().length(); i++) {
						request = new URLRequest(externalXML.child(i));
						this.ldr = new Loader();
						this.ldr.load(request);
						this.ldr.name="bild"+String(i);
						addChild(this.ldr);
						getChildByName("bild"+i).x=i*200-200;
					}
				} else {
					trace("loader is not a URLLoader!");
				}
			}

		}

	}
}

Bilder laden 4

Hier noch eine alternative Möglichkeit, die im Praxiseinsatz den wesentlichen Vorteil bildet, dass alle Bilder in einem Array abgelegt werden, auf dass man später zugreifen kann, um beispielsweise Bilder aus- und einzublenden. Allerdings entspricht die Reihenfolge der Anzeige nicht der Reihenfolge in der XML Datei. Siehe auch das Beispiel "mehrer Bilder laden" in meinem Tipp Loader.

Für den Inhalt dieser Seite ist eine neuere Version von Adobe Flash Player erforderlich.

Adobe Flash Player herunterladen

package 
{
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;
	import flash.events.*;
	import flash.net.URLLoader;
	import flash.net.URLRequest;

	public class PicLoader extends MovieClip
	{
		private var request:URLRequest;
		private var ldr:Loader;
		public var bilder:Array = new Array();
		
		public function PicLoader()
		{

			removeEventListener(Event.ADDED_TO_STAGE, init);
			var externalXML:XML;
			var loader:URLLoader = new URLLoader();
			var request:URLRequest = new URLRequest("bilderliste.xml");
			loader.load(request);
			loader.addEventListener(Event.COMPLETE, onComplete);

			function onComplete(event:Event):void
			{
				var loader:URLLoader = event.target as URLLoader;
				if (loader != null)
				{
					externalXML = new XML(loader.data);
					
					for (var i:uint=0; i < externalXML.children().length(); i++)
					{
						request = new URLRequest(externalXML.child(i));
						this.ldr = new Loader();
						this.ldr.load(request);
						this.ldr.contentLoaderInfo.addEventListener(Event.INIT, initListener);
					}
				}
				else
				{
					trace("loader is not a URLLoader!");
				}
			}
		}

		private function initListener(evt:Event)
		{
			bilder.push(evt.target.content);
			bilder[bilder.length-1].x = bilder[bilder.length-1].width * Number(bilder.length-1);
			this.addChild(bilder[bilder.length-1]);
		}


	}
}

Bilder laden 5

Hier werden auch die Titel der Bilder hinzugefügt. Die Titel wurden als Attribute in der XML-Datei definiert.

Für den Inhalt dieser Seite ist eine neuere Version von Adobe Flash Player erforderlich.

Adobe Flash Player herunterladen

Die XML-Datei bilderliste.xml

<?xml version="1.0" encoding="utf-8"?>
<Bilderliste>
<Bild titel="Finn auf dem Balkon">img/1.jpg</Bild>
<Bild titel="Finn sitzend">img/2.jpg</Bild>
<Bild titel="Finn im Wald">img/3.jpg</Bild>
<Bild titel="Finn auf der Strae">img/4.jpg</Bild>
<Bild titel="Finn auf d em Sofa">img/5.jpg</Bild>
<Bild titel="Beagle">img/6.jpg</Bild>
<Bild titel="Der kleine Finn">img/7.jpg</Bild>
<Bild titel="Finn im Feld">img/8.jpg</Bild>

</Bilderliste>

 

Actions der as

package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.text.*;

	public class PrevMovies4 extends MovieClip {
		private var request:URLRequest;
		private var ldr:Loader= new Loader();
		private var myText:TextField;
		private var loader:URLLoader = new URLLoader();
		 

		public function PrevMovies4() {
			var externalXML:XML;
			XML.ignoreComments = true;
			XML.ignoreWhitespace = true;
			
			request = new URLRequest("bilderliste.xml");
			this.loader.load(request);
			this.loader.addEventListener(Event.COMPLETE, onComplete);
			function onComplete(event:Event):void {
				var loader:URLLoader = event.target as URLLoader;
				if (loader != null) {
					externalXML = new XML(loader.data);
					for (var i:uint=0; i<externalXML.children().length(); i++) {
						request = new URLRequest(externalXML.Bild[i]);
						this.ldr = new Loader();
						this.ldr.load(request);
						this.ldr.name="bild"+String(i);	
						addChild(this.ldr);
						getChildByName("bild"+i).x=i*200;
					}
					for (i=0; i<externalXML.children().length(); i++) {
					myText = new TextField();
					myText.text=externalXML.Bild[i].@titel;
					myText.name="t"+String(i);
					addChild(myText);
					myText.y=130;
					getChildByName("t"+i).x=i*200;
					}	
					
				} else {
					trace("loader is not a URLLoader!");
				}
			}

		}

	}
}

Bilder laden 6

Hier kommt eine etwas geänderte XML Datei zum Einsatz, neben Titel, Vorschaubild-url ist nun noch eine URL hinzugekommen, die beim Anklicken eines Vorschaubildes aufgerufen werden soll. Die einzelnen URLs werden in einem Array hinterlegt: filmURL Das Problem ist hier dem DisplayObjekt die richtige URL zuzuweisen. Da auch die DisplayObjekte in der Namensgebung durchnumeriert sind (bild1, bild2, bild3...etc.) Ziehe ich mir die Nummer aus dem Namen und nehmen diese als Index für das Array filmURL[index]. Siehe dazu meinen AS2 Tipp: Schreibmaschineneffekt, substring, etc.

Unten ist noch eine Bewegungsfunktion hinzugekommen, die man in ähnlicher Form in meinen AS2 und AS3 Tipps (programmierte Bewegung) findet.

XML-Datei

<?xml version="1.0" encoding="utf-8"?>
<Bilderliste>
<Bild>
<titel>Finn auf dem Balkon</titel>
<bildurl> img/1.jpg</bildurl>
<filmurl>http://www.pastorpixel.de</filmurl>
</Bild>

<Bild>
<titel>Finn sitzend</titel>
<bildurl>img/2.jpg</bildurl>
<filmurl>http://www.on-design.de</filmurl>
</Bild>

<Bild>
<titel>Finn im Wald</titel>
<bildurl>img/3.jpg</bildurl>
<filmurl>http://www.malebengucken.de</filmurl>
</Bild>

<Bild>
<titel>Finn auf der Strae</titel>
<bildurl>img/4.jpg</bildurl>
<filmurl>http://www.checkdent.com</filmurl>
</Bild>
<Bild>
<titel>Finn auf d em Sofa</titel>
<bildurl>img/5.jpg</bildurl>
<filmurl>http://www.pastorpixel.de</filmurl>
</Bild>

<Bild>
<titel>Beagle</titel>
<bildurl>img/6.jpg</bildurl>
<filmurl>http://www.on-design.de</filmurl>
</Bild>

<Bild>
<titel>Der kleine Finn</titel>
<bildurl>img/7.jpg</bildurl>
<filmurl>http://www.malebengucken.de</filmurl>
</Bild>

<Bild>
<titel>Finn im Feld</titel>
<bildurl>img/8.jpg</bildurl>
<filmurl>http://www.pastorpixel.de</filmurl>
</Bild>

</Bilderliste>

Actions der as

package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.text.*;

	public class PrevMovies5 extends MovieClip {
		private var request:URLRequest;
		private var ldr:Loader= new Loader();
		private var myText:TextField;
		private var loader:URLLoader = new URLLoader();
		private var filmURL:Array = new Array;
		private var xziel:Number;
		private var ab:uint=20;
		
		public function PrevMovies5() {
			var externalXML:XML;
			XML.ignoreComments = true;
			XML.ignoreWhitespace = true;

			request = new URLRequest("prevListe.xml");
			this.loader.load(request);
			this.loader.addEventListener(Event.COMPLETE, onComplete);
			function onComplete(event:Event):void {
				var loader:URLLoader = event.target as URLLoader;
				if (loader != null) {
					externalXML = new XML(loader.data);
					for (var i:uint=0; i<externalXML.children().length(); i++) {
						request = new URLRequest(externalXML.Bild[i].bildurl[0]);
						filmURL[i] = externalXML.Bild[i].filmurl[0];
						this.ldr = new Loader();
						this.ldr.load(request);
						this.ldr.name="bild"+String(i);
						
						addChild(this.ldr);
						getChildByName("bild"+i).x=i*200;

						getChildByName("bild" + i).addEventListener(MouseEvent.CLICK,
							function (evt:MouseEvent):void{
							var filmrequest:URLRequest;
							//die Nummer für: filmURL[1] wird aus displayObjektname generiert: bild1, siehe AS2 Tipp substring etc. 
							filmrequest = new URLRequest(filmURL[evt.currentTarget.name.substring(Number(evt.currentTarget.name.lastIndexOf("d")+1))]);
							
							navigateToURL(filmrequest,"_blank");
							}
					);
						
				}
				for (i=0; i<externalXML.children().length(); i++) {
					myText = new TextField();
					myText.text=externalXML.Bild[i].titel[0];
					myText.name="t"+String(i);
					addChild(myText);
					myText.y=130;
					getChildByName("t"+i).x=i*200;
				}
			} else {
				trace("loader is not a URLLoader!");
			}
		}
			this.addEventListener(MouseEvent.MOUSE_MOVE,mauspos);
			this.addEventListener(Event.ENTER_FRAME, bewegung);
	}
		public function mauspos(evt:MouseEvent):void {
			xziel = (((evt.currentTarget.width-550)/(550-ab*2))*(evt.stageX-ab))*-1;
		}
		
		public function bewegung(evt:Event):void {
			evt.currentTarget.x = evt.currentTarget.x+(xziel-evt.currentTarget.x)/6;
			}
}
}

Bilder laden 7

Hier noch eine kleine Änderung und zwar werden hier die Links über Buttons aufgerufen. Vorraussetzung ist, dass sich in der Bibliothek ein Button befindet der den Klassennamen "butblue" hat. Beachte, wie ich hier die Links den einzelnen Buttons zuweise. Diese Methode ist mit Loader Objekt nicht möglich. Daher ist es im vorigen Beispiel anders gelöst. Siehe auch den AS3 Tipp Display Objekte.

Action der as


package {
	import flash.display.Loader;
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.text.*;

	public class PrevMovies6 extends MovieClip {
		private var request:URLRequest;
		private var ldr:Loader= new Loader();
		private var myText:TextField;
		private var loader:URLLoader = new URLLoader();
		
		private var xziel:Number;
		private var ab:uint=20;
		private var but:butblue;
		public function PrevMovies6() {
			var externalXML:XML;
			XML.ignoreComments = true;
			XML.ignoreWhitespace = true;

			request = new URLRequest("prevListe.xml");
			this.loader.load(request);
			this.loader.addEventListener(Event.COMPLETE, onComplete);
			function onComplete(event:Event):void {
				var loader:URLLoader = event.target as URLLoader;
				if (loader != null) {
					externalXML = new XML(loader.data);
					for (var i:uint=0; i<externalXML.children().length(); i++) {
						request = new URLRequest(externalXML.Bild[i].bildurl[0]);
						this.ldr = new Loader();
						this.ldr.load(request);
						this.ldr.name="bild"+String(i);
						addChild(this.ldr);
						getChildByName("bild"+i).x=i*201;

						
						but = new butblue();
						but.name="but"+String(i);
						but.link= externalXML.Bild[i].filmurl[0];
						addChild(but);
						getChildByName("but"+String(i)).x=i*201;
						getChildByName("but"+String(i)).addEventListener(MouseEvent.CLICK,
							function (evt:MouseEvent):void{
								var filmrequest:URLRequest;
								filmrequest= new URLRequest(evt.currentTarget.link);
								navigateToURL(filmrequest,"_blank");
							}
						);
									
					myText = new TextField();
					myText.text=externalXML.Bild[i].titel[0];
					myText.name="t"+String(i);
					addChild(myText);
					myText.y=130;
					getChildByName("t"+i).x=i*201;
						
				}

			} else {
				trace("loader is not a URLLoader!");
			}
		}
			this.addEventListener(MouseEvent.MOUSE_MOVE,mauspos);
			this.addEventListener(Event.ENTER_FRAME, bewegung);
	}
		public function mauspos(evt:MouseEvent):void {
			xziel = (((evt.currentTarget.width-550)/(550-ab*2))*(evt.stageX-ab))*-1;
		}
		
		public function bewegung(evt:Event):void {
			evt.currentTarget.x = evt.currentTarget.x+(xziel-evt.currentTarget.x)/6;
			}
}
}



 

Alle Bilder (bzw. die gesamte Displayliste) aus einem MC löschen

if (meinContainer.numChildren != 0) {

while (meinContainer.numChildren) {

meinContainer.removeChildAt(0);

}

}