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.

AJAX – Request erstellen und testen

Mit folgendem Code kann man einen XMLHTTP-Request erstellen, der auch im alten Internet Explorer greift:

//XMLHTTPREQUEST
function getRequest()
{
	if (window.XMLHttpRequest)
	{
		//Code für Firefox – XMLHttpRequest ist nicht als ActiveX eingebunden
		return new XMLHttpRequest();
	}
	else
	{
		if(window.ActiveXObject)
		{
			//XMLHTTP als ActiveX im Internet Explorer ab 6
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		else
		{
			return null;
		}
	}
}

Contenido Navigation als XML exportieren

Um die Contenido-Navigation als XML auszugeben, wird zuerst eine Klasse xmlnav angelegt und mit einer Datenbankverbindungsfunktion versehen, weils für das Beispiel einfach praktisch ist:

class xmlnav
{
	function connect()
	{
		include "config.inc.php"; //enthält nur Datenbanklogin
		$this->dbuser = $DBUSER;
		$this->dbpass = $DBPASS;
		$this->dbhost = $DBHOST;
		$this->dbname = $DBNAME;

		$dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass);

		if(!is_resource($dbh))
		{
			echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es sp&auml;ter wieder";
		}
		else
		{
			mysql_select_db($this->dbname,$dbh);
			return $dbh;
		}
	}
}

Danach braucht es Funktionen die die Tabelle mit der Navi auslesen und daraus XML erstellen:

/*
Funktion zur Rückgabe der
URL-Namen aus der Tabelle con_art_lang
Feld = urlname;
*/


function get_urlname()
{
	$arrUrlname = array(); //Array zum Auffangen der urlnamen

	$query = "SELECT * FROM con_art_lang";
	$result = mysql_query($query,$this->connect());

	while($row = mysql_fetch_assoc($result))
	{
		array_push($arrUrlname,$row["urlname"]);
	}

	return $arrUrlname; //Rückgabe des Arrays mit den urlnamen
}


/*
Funktion zur Erstellung des xml-Files mit der
URL-Namen-Navigation.
*/


function create_xml_from_urlname()
{
	$arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion

	echo "<xmlnav>";

	foreach($arrUrlnameFromFunction as $value)
	{
		//Kleinschreibung
		$value = strtolower($value);

		//Startseite erkennen
		if(eregi("artseite",$value))
		{
			$value = "/";
		}
		
		echo "<nav name='$value' />";
	}

	echo "</xmlnav>";

}

Die ganze Klasse sieht dann so aus:


/*
* Created on 29.01.2007
*
* To change the template for this generated file go to
* Window – Preferences – PHPeclipse – PHP – Code Templates
*/


class xmlnav
{
	function connect()
	{
		include "config.inc.php";
		$this->dbuser = $DBUSER;
		$this->dbpass = $DBPASS;
		$this->dbhost = $DBHOST;
		$this->dbname = $DBNAME;

		$dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass);

		if(!is_resource($dbh))
		{
			echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es später wieder";
		}
		else
		{
			mysql_select_db($this->dbname,$dbh);
			return $dbh;
		}
	}

	
	/*
	Funktion zur Rückgabe der
	URL-Namen aus der Tabelle con_art_lang
	Feld = urlname;
	*/
	

	function get_urlname()
	{
		$arrUrlname = array(); //Array zum Auffangen der urlnamen

		$query = "SELECT * FROM con_art_lang";
		$result = mysql_query($query,$this->connect());

		while($row = mysql_fetch_assoc($result))
		{
			array_push($arrUrlname,$row["urlname"]);
		}

		return $arrUrlname; //Rückgabe des Arrays mit den urlnamen
	}

	
	/*
	Funktion zur Erstellung des xml-Files mit der
	URL-Namen-Navigation.
	*/
	

	function create_xml_from_urlname()
	{
		$arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion
		
		echo "<xmlnav>";

		foreach($arrUrlnameFromFunction as $value)
		{
			//Kleinschreibung
			$value = strtolower($value);

			//Startseite erkennen
			if(eregi(‚artseite‘,$value))
			{
				$value = "/";
			}
			
			echo "<nav name='$value' />";
		}

	echo "</xmlnav>";

	}
}

Jetzt beötigen wir lediglich noch eine PHP-Datei, welche die Klasse includiert und PHP zurückgibt:

header("Content-Type: text/xml");
echo "<?xml version='1.0' ?>". "\n";
include "class.xmlnav.php";
$xmlnav = new xmlnav();

$xmlnav -> create_xml_from_urlname();

Diese Datei kann nun als XML-Quelle verwendet werden.

Datenbankverbindung aufbauen

Folgende Funktion liefert ein Handle auf eine Datenbankverbindung zurück:

function connect()
{
	$DB_HOST = "hostname";
	$DB_NAME = "datenbankname";
	$DB_USER = "dbuser";
	$DB_PASS = "pass";

	//Datenbank -> Verbindung aufbauen
	$link_id = mysql_connect($DB_HOST,$DB_USER,$DB_PASS);
	if(!mysql_select_db($DB_NAME,$link_id))
	{
		echo "Connection Error";
	}
	else
	{
		return $link_id;
	}
}

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
}

Standarddomain ohne www in .htaccess definieren

Um sämtliche Aufrufe einer Domain auf die Standarddomain ohne vorangestelltes www zu leiten, muss man folgende .htaccess-Datei anlegen:

#Rewrite Engine
RewriteEngine On
RewriteCond "%{HTTP_HOST} %{THE_REQUEST}" "^www.([^ ]+) [^ ]+ ([^ ]+)" [nocase]
RewriteRule . http://%1%2 [R,L]

Eventuell sind noch options anzugeben, dies hängt vom Provider ab. So können Sie testen, ob mod_rewrite funkioniert.