Pastor Pixel Tipps Tutorial Anleitungen Hilfe

Flash Actionscript 3 und PHP

Siehe die anschaulichen Beispiele auf der Seite PHP und Flash TIPP auf AXXG Blog Danke dafür.

Mein Beispiel habe ich von ihm "geklaut" und zu einem Email Formular umgeändert.

Email

Im folgenden Beispiel wird eine Emailformular mit Flash erstellt. Die Daten werden an eine PHP-Seite gesandt. Die PHP Seite empfängt die Daten und versendet diese per PHP-mail Funktion. Bei Erfolg schreibt PHP eine Variable auf die Seite. Diese wird dann von Flash empfangen und in Flash in einem dynamischen Textfeld dargestellt.

PHP läuft auf dem Server. Man kann dieses Beispiel also nur auf einem Server ausführen.

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

Adobe Flash Player herunterladen

Actionscript im ersten Bild der fla Datei

//import Anweisungen sind in der fla nicht nötig
import flash.system.Capabilities;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.net.navigateToURL;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequestMethod;


var loader:URLLoader;
var req:URLRequest;
var urlVar:URLVariables = new URLVariables();
send_btn.addEventListener(MouseEvent.CLICK,senden);


function senden(evt:MouseEvent):void
{
	// Objekt URLLoader
	loader = new URLLoader();
	loader.dataFormat = URLLoaderDataFormat.VARIABLES;
	// Eventhandler zum auffangen der Antwort von PHP /Funktion siehe unten
	loader.addEventListener(Event.COMPLETE, handleComplete);
	
	// Objekt URLRequest / Pfad zur Php Datei
	req = new URLRequest("mail.php");
	
	// Methode GET oder POST / PHP muss mit gleicher Methode die Daten empfangen
	req.method = URLRequestMethod.POST;
	
	// Variablen festlegen und belegen
	
	// Name kann nach dem urlVar.******* frei festgelegt werden!
	//diese Variablen werden an PHP geschickt
	//die Werte stammen aus den Eingabetextfeldern
	// Die Funktion escape() transformiert den Inhalt URL-freundlich
	urlVar.vollname = escape(vollname.text);
	urlVar.adresse = escape(adresse.text);
	urlVar.ort = escape(ort.text);
	urlVar.mail = escape(email.text);
	urlVar.nachricht = escape(nachricht.text);
	
	// Variablen dem Request zuweisen
	req.data = urlVar;
	
	// Daten senden
	loader.load(req);
}

function handleComplete(evt:Event):void
{
	var resultVars:URLVariables = new URLVariables(evt.target.data);
	//die Variable namen ok welche von PHP empfangen wurde,
	//wird dem dynamischen Textfeld zugewiesen
	//weitere Variablen auf gleiche Weise Z.B: resultVars.myVar
	this.anzeige.text = resultVars.ok;
}

PHP
 Die Daten werden mittels post empfangen und PHP Variablen zugewiesen.

Die PHP mail() Funktion hat 4 Parameter

  1. Empfänger-Email-Adresse,
  2. Betreff
  3. Nachricht
  4. Form:Absender-Email-Adresse

Die mail() Funktion gibt bei Erfolg den Wert true zurück. Deswegen steht die mail() Funktion in einer if Struktur. Bei Erfolg schreibt PHP etwas auf die Seite. Wegen eines Bugs in Flash wird zuerst eine Variable mit Wertzuweisung erzeugt, die nicht empfangen wird und ansonsten auch keine Bedeutung hat. (test=hallo) Anschließend werden Variablen mit kaufmännischem & angehängt. Das Ganze wird mittels echo auf die Seite geschrieben und dann von Flash empfangen. In diesem Beispiel ist es nur die Variable "ok" aber man könnte auch weitere Variablen mit kaufmännischem & anhängen. z.B.:

echo "test=hallo&myVar1=ersteNachricht&myVar2=noch eine Nachricht";

In voriger Zeile kann man die Werte der beiden Variablen myVar1 und myVar2 in Flash auffangen.

Der PHP Code im folgenden wurde in Kommentarzeichen eingefügt, da ich sonst nicht anzeigen lassen könnte. Das muss man wie im folgendem Beispiel korrigieren:
<?php
PHPCode;
?>



Highscore / Daten von Textdatei oder PHP an Flash

Hier werden die Variablen aus einer Textdatei von Flash eingelesen. In diesem Falle ist eine Textdatei, es könnte aber auch eine PHP-Datei sein, in welcher der Inhalt mittels echo eingefügt wurde.

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

Adobe Flash Player herunterladen

Actionscript im ersten Bild der fla

//import in fla nicht nötig
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.navigateToURL;
import flash.events.Event;

var loader:URLLoader;
var req:URLRequest;

loader = new URLLoader();
// Eventhandler zum auffangen der Antwort
loader.addEventListener(Event.COMPLETE, handleComplete);
// Pfad zur Php Datei;
req = new URLRequest("highscore.txt");
loader.load(req);
//Daten werden empfangen und den beiden dynamischen Textfeldern zugewiesen;
function handleComplete(evt:Event):void
{
	var resultVars:URLVariables = new URLVariables(evt.target.data);
	this.punkte_txt.text = resultVars.punkte;
	this.namen_txt.text = resultVars.namen;
}

Inhalt der Textdatei highscore.txt

test=hallo&punkte=100&namen=Werner Müller

Highscoreliste String zum Array

Hier werden Punkte und Namen mit Komma getrennt aufgeführt. Dadurch hat man die Möglichkeit mittels split() die Werte in Arrays abzulegen. Außerdem werden Punkte und Namen durch einen Tabulator \t aufgeführt. Siehe dazu auch meinen Tipp Textfelder.

Im folgenden Beispiel wurde das Textfeld händisch auf die Bühne gezogen. Bei dieser Methode hat man nicht die Möglichkeit die Abstände der Tabulatoren genau festzulegen. Wenn man die Abstände genau definieren will, muss das Textfeld per Actionscript erzeugt werden, wie im folgenden Beispiel. Man beachte, dass die Methode setTextFormat() nach der Zuweisung des Textes erfolgen muss.

var ft:TextFormat = new TextFormat();
var highscore_txt:TextField = new TextField();
highscore_txt.x=20;
highscore_txt.y=100;
ft.font="Verdana";
ft.size=14;
highscore_txt.autoSize = TextFieldAutoSize.LEFT;
addChild(highscore_txt);
ft.tabStops = [200];
highscore_txt.text="alle meine\tentchen";
highscore_txt.setTextFormat(ft);

 

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

Adobe Flash Player herunterladen

Actionscript im ersten Bild der fla

//import in fla nicht nötig
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.navigateToURL;
import flash.events.Event;

var loader:URLLoader;
var req:URLRequest;
loader = new URLLoader();
// Eventhandler zum auffangen der Antwort
loader.addEventListener(Event.COMPLETE, handleComplete);
// Pfad zur Php Datei;
req = new URLRequest("highscore.php");
loader.load(req);
//Daten werden empfangen und den beiden dynamischen Textfeldern zugewiesen;
function handleComplete(evt:Event):void
{
	var resultVars:URLVariables = new URLVariables(evt.target.data);
	//this.punkte_txt.text = resultVars.punkte;
	var punkteStr:String = "";	
	var punkteAr:Array = resultVars.punkte.split(",");
	var namenAr:Array = resultVars.namen.split(",");
	for (var i=0; i < punkteAr.length; i++)
	{
		punkteStr +=  String(punkteAr[i]) + "\t";
		punkteStr +=  String(namenAr[i]) + "\n";
	}
	highscore_txt.text = punkteStr;
}

PHP Script