XML importieren mit ActionScript 3

Zuerst benötigt man die XML-Datei, deren Pfad wir in einer Variable speichern:

var xml_file:String = "http://www.test.com/test.xml";

Als nächstes erstellen wir das URLLoader-Objekt, um das XML zu laden:

var xml_loader:URLLoader = new URLLoader();
xml_loader.load(new URLRequest(xml_file));

Jetzt legen wir 2 leere Arrays an, um die Attribute der XML-Elemente zu speichern:

var xml_name:Array = new Array();
var xml_typ:Array = new Array();

Damit das XML erst dann verarbeitet wird, wenn die Datei vollständig geladen ist, müssen wir mit Hilfe eines eventListeners das entsprechende Ereignis (COMPLETE) abfangen:

//Nach Ende des Ladeprozesses (eventListener lauscht darauf) wird xml verarbeitet
xml_loader.addEventListener(Event.COMPLETE,parseXML);

Wenn COMPLETE eingetreten ist soll also parseXML ausgeführt werden. Im Beispiel gehen wir von einer XML-Datei mit folgenden Elementen aus:

<wurzel name="wurzelX" type="wurzelX" />

function parseXML(evt:Event)
{
	var xml_file:XML = new XML(evt.target.data); //XML-daten einlesen
	xml_file.ignoreWhitespace = true;

	for (var k:int = 0;k < xml_file.wurzel.length();k++)
	{
		xml_name.push(xml_file.wurzel[k].@name);
		xml_typ.push(xml_file.wurzel[k].@typ);
	}
}

Lösungsansatz: Problem Höhe & Breite bei Rotation in Flash

Wenn man einen MovieClip rotiert, schnellt man schnell fest, dass, liest man nun seine Höhe aus, diese nicht mehr diesselbe ist, wie vor der Rotation. Flash liest nun hier die Höhe der Diagonale aus. Bei einem rechteckigen /dreieckigen MovielClip kann man sich hier zur Umrechnung des Satzes des Pythagoras bedienen, um aus der Höhe der Diagonale wieder die richtigen Längen/Höhenangabe zu berechnen. Es sei hier lediglich auf Wikipedia verwiesen:

http://de.wikipedia.org/wiki/Satz_des_Pythagoras

Farbe eines Movie Clips mit AS3 ändern

Wenn man die Farbe eines bestehenden MovieClips mit Actionscript 3 ändern möchte, geht man so vor:

Folgenden MovieClip wollen wir ändern:

mc_color

Hierzu erstellen wir ein ColorTransform-Objekt, welches die Farbinfo unseres Clips enthält:

var color_trans:ColorTransform = mc_color.transform.colorTransform;

Dann geben wir den neuen Farbwert an:

color_trans.color=0xff6600;

Und wenden ihn auf den MovieClip an:

mc_color.transform.colorTransform = color_trans;

MovieClip mittig ausrichten AS3

Wenn man einen MovieClip mittig ausrichten möchte, so benötigt man als erstes die Breite & Höhe des Containers in dem sich der MovieClip befindet, so zum Beispiel ein Clip namens ‚mc_container‘, sofern der Clip auf der Hauptzeitleiste liegt. Der Clip der mittig ausgerichtet werden soll, heißt im Beispiel „mc_mitte“. So wird er ausgerichtet:

Von der Breite/Höhe des umgebenden Containers wird die Breite/Höhe des Clips abgezogen so, dass man die Breite/Höhe des überbleibenden Randes hat, der nun noch auf beide Seite aufgeteilt werden muss, also durch 2 geteilt werden muss:

mc_mitte.x = mc_container.width - mc_mitte.width / 2
mc_mitte.y = mc_container.height - mc_mitte.height/ 2

Mit PHP XML – Ausgabe für Actionscript 3 erzeugen

Will man dynamische Daten in Flash mittels AS3 verarbeiten, so bietet sich der XML-Import an. PHP bietet einfachste Möglichkeiten, eine XML-Ausgabe zu erzeugen. Folgendermaßen erzeugen Sie eine XML-Datei mittels PHP für die Verarbeitung mit Actionscript 3.

Die Datei selbst benennen sie z.B.mit xml_output.php. Nun müssen sie den Dateityp mittels folgender Anweisung festlegen:

header("Content-Type: text/xml");

Nun geben sie bereits die ersten XML-Elemente aus. Ob sie die Daten aus einer Datenbank holen oder aus irgendeiner anderen Quelle beziehen, sei egal. Im vorliegenden Falle werden die Daten aus einer MYSQL-DB geholt und in einer Schleife verarbeitet:

echo "<?xml version='1.0' encoding='ISO-8859-1' ?>". "\n";
echo "<wurzel>";

while ($row = mysql_fetch_assoc($result_of_db_query))
{
	echo "<element>".$row['elemente']."</element>";
}

echo "</wurzel>";

Das soll es aus PHP-Sicht gewesen sein. Als zu importierende Datei steht nun die xml_output.php für Flash zur Verfügung.

Für Drehung den Registrierungspunkt ändern / Actionscript 3

Um den Registrierungspunkt für eine Drehung eines Rechteckes zu verändern, benötigen wir die Matrix-Klasse. Da sich das Rechteck permanent drehen soll, muss man auf das ENTER_FRAME Event lauschen.

Für dieses Beispiel wird davon ausgegangen, dass bereits ein MovieClip mit dem Namen rect auf der Bühne liegt bzw. bereits zur Anzeigeliste hinzugefügt wurde. Dieser soll nun sozusagen mittig rotieren und nicht über seinen Standard-Registrierungspunkt beim 0,0.

//Zuerst einen EventListener anlegen
rect.addEventListener(Event.ENTER_FRAME,enter_frame);

//Die Geschwindigkeit der Drehung / Änderung
rect.aenderung = 1;

//Jeweils halbe Breite und Höhe des Rechteckes speichern
var rectWH:Number = rect.width/2; //halbe breite des zu transformierenden Objektes
var rectHH:Number = rect.height/2; //halbe höhe des zu transformierenden Objektes

//Die EventListener-Funktion
function enter_frame(evt:Event)
{
var rotationMatrix:Matrix = new Matrix(); //Instanz erzeugen
rotationMatrix.translate(-rectWH, -rectHH); //verschiebt Objekt auf x/y-Achse
rotationMatrix.rotate(rect.aenderung ); //Rotation durchführen
rotationMatrix.translate(rectWH, rectHH); //nochmals verschieben

rect.transform.matrix = rotationMatrix; //Transformation anwenden
rect.aenderung += 1; //Geschwindigkeit hochzählen
}