Werte aus Flash an PHP und JavaScript, und umgekehrt senden

Titel: Werte aus Flash an PHP und JavaScript, und umgekehrt senden
Schwierigkeitsgrad: Fortgeschrittene
Autor: Benny
Eingetragen: 02.02.2008
Hits: 37761
Kommentare: 2
User Bewertung: / 30 User haben abgestimmt

1 2 3 4 5


Social-Bookmark:

Dieses Tutorial soll dir zeigen, auf welche Weise du Werte aus Flash an PHP und JavaScript, und umgekehrt senden kannst.

Tutorial-Übersicht

Werte von HTML an Flash

Werte von HTML an Flash senden ist kinderleicht. Beim Einbinden desFlashmovies kann man einfach an den Dateinamen die Variablen und Werte"dranhängen".

Beispiel HTML-Code

1
2
3
4
5
6
7
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"width="468" height="60" id="mein_flashmovie" align="middle">
<
param name="allowScriptAccess" value="sameDomain">
<
param name="movie" value="deine_flash_datei.swf?meine_variable=mein_wert&eine_andere_variable=12345">
<
param name="quality" value="high">
<
param name="bgcolor" value="#ffffff">
<
embed src="deine_flash_datei.swf?meine_variable=mein_wert&eine_andere_variable=12345"quality="high" bgcolor="#ffffff" width="468" height="60"name="mein_flashmovie" align="middle" allowScriptAccess="sameDomain"type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/go/getflashplayer">
</
object>

In Flash erstellst du jetzt mittels des Textwerkzeugs (T)zwei Textfelder. Wähle nun ein Textfeld aus, klicke unten aufEigenschaften (ist in der Regel vorausgewählt) und wähle in derDropdown-Liste Eingabetext aus. Nun trägst weiter rechts bei Var: "test_1" ein. Das gleiche machst du auch mit dem anderen Textfeld, nur trage dort bei Var: "test_2" ein. Nun klickst du in die Zeitleiste auf das erste Schlüsselbild mit der rechten Maustaste und klickst auf Aktionen. Füge in dem Fenster nun den Beispiel Code ein.

Beispiel ActionScript

1
2
_root.test_1 _root.meine_variable;
_root.test_2 _root.eine_andere_variable;

Wenn du nun alles richtig gemacht hast (das du die Flashdatei erstellthast setze ich jetzt mal voraus), dann steht beim Aufrufen deinerHTML-Seite, wo du den HTML-Code von oben drinnen stehen hast, im erstenTextfeld "mein_wert" und im zweiten Textfeld "12345".
Steht es da? Ja? Wirklich? Sehr gut, prima!

Werte von JavaScript an Flash

Werte von JavaScript an Flash senden bringt mehrere Probleme mit sich.Zum einen ist da Opera, der das standardmäßig nicht unterstützt und zumanderen macht dir vermutlich die Sicherheitseinstellungen in Flasheinen Strich durch die Rechnung. Denn wenn man mittels JavaScript Wertean Flash senden möchte, dann muss man (der User) im Einstellungsmanagervon Flash (mehr Informationen zum Flash Einstellungsmanager) bei den Globalen Sicherheitseinstellungen entweder Immer fragen oder Immer zulassen auswählen oder bei Diesen Dateien und Ordnern immer vertrauen die Adresse deine Website eintragen.
Gehen wir aber jetzt mal davon aus, dass alle nötigen Einstellungen gegeben sind und fahren mit folgendem HTML-Code fort.

Beispiel HTML-Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script language="JavaScript" type="text/JavaScript">
var 
flashId 'mein_flashmovie';

function 
flashobj(flashId)
{
if (
navigator.appName.indexOf("Microsoft") !=-1)
{
return 
window[flashId]
}
else
{
return 
document[flashId]
}
}

function 
setFlashVar(flash_variableflash_value)
{
flashobj(flashId).SetVariable(flash_variableflash_value);
}
</script>

<!--ab hier kommt der HTML-Code von oben-->?>

Kurze Erklärung

Beispiel HTML-Code

1
2
<a onClick="setFlashVar('test_1', 'cool, es hat funktioniert')">Fülle Textfeld 1</a>
<
a onClick="setFlashVar('test_2', 'Das geht ja super einfach!')">Fülle Textfeld 2</a>

Wenn du alles richtig gemacht hast, dann müsste beim Anklicken derbeiden Links der Inhalt der beiden Textfelder ausgetauscht bzw. gesetztwerden.

Werte von Flash an JavaScript

Mittels ActionScript ist es in Flash möglich, ein neues Fenster zuöffnen und eine Website zu laden. Die Funktion dafür lautet inActionScript getURL();.

Diese Funktion kann man aber auch dazu benutzen, eine JavaScriptFunktion, die irgendwo im HTML-Quelltext steht, wo auch das Flashmovieeingebunden ist, aufzurufen.
In Flash erstellst du jetzt einfach mal mit dem Rechteckwerkzeug (R) ein kleines Rechteck, markierst es und drückst F8 (oder Menüleiste->Modifzieren->In Symbol konvertieren). Hier wählst du nun bei Typ Schaltfläche aus. Klicke nun mit dem Auswahlwerkzeug (V) auf deine Schaltfläche, dann rechte Maustaste Aktionen. Es ist wichtig, dass du die Schaltfläche (also dein Rechteck) vorher ausgewählt hast und die Aktionen sich auf deine Schaltfläche beziehen und nicht auf das Schlüsselbild. Füge in dem Fenster nun den Beispiel Code ein.

Beispiel ActionScript

1
2
3
4
on(release)
{
getURL("javascript:setJSVar('Dieser Wert kommt von Flash');");
}

Beispiel HTML-Code

1
2
3
4
5
6
7
8
9
10
<script language="JavaScript" type="text/JavaScript">
<!--
bis hier kommt der JavaScript-Code von oben-->

function 
setJSVar(js_var)
{
alert(js_var);
}
</script><br>

<!--ab hier kommt der HTML-Code von oben-->?>

Hast du alles richtig gemacht, dann erscheint nach dem Anklicken derSchaltfläche ein Dialogfenster mit dem Text "Dieser Wert kommt vonFlash".

Werte von PHP an Flash

Um Werte von PHP nach Flash zu bekommen gibt es leider nur eine, meiner Meinung nach, umständliche Variante.

Das Problem ist, dass Flash zwar Daten einlesen kann, diese jedoch in Form eines URL-Strings kommen müssen.
Obes in Flash 8 mittlerweile eine andere Variante gibt ist mir nichtbekannt und die Variante, die ich dir zeige ist die einzige, die ichkenne und die ab Flash 6 funktioniert. Fangen wir an. Erstelle jetztwieder mittels dem Textwerkzeug (T) zwei Textfelder. Wähle nun ein Textfeld aus, klick unten auf Eigenschaften und wähle in der Dropdown-Liste Eingabetext aus. Nun trägst du weiter rechts bei Var: "test_3" ein. Das gleiche machst du auch mit dem anderen Textfeld, nur trägst du dort bei Var: "test_4" ein. Klick nun in die Zeitleiste auf das erste Schlüsselbild mit der rechten Maustaste und klick auf Aktionen. Füge in dem Fenster nun den Beispiel Code ein.

Beispiel ActionScript

1
2
3
4
5
6
7
8
9
10
11
var LoadVarObject = new LoadVars ();
LoadVarObject.onLoad = function (loadSuccess)
{
if (
loadSuccess == true)
{
_root.test_3 this.mein_test3_wert;
_root.test_4 this.mein_test4_wert;
}
};

LoadVarObject.load ("werte.php");

Kurze Erklärung

In der ersten Zeile wird das Objekt LoadVars-Klasse erzeugt. .onLoad wird aufgerufen, sobald ein .load Vorgang beendet ist.
Bei LoadVarObject.load();wird als Quelle werte.php angegeben, aus der die Variablen geladenwerden sollen. Ist der Vorgang erfolgreich beendet, dann sind dieVariablen _root.test_3 und _root.test_4 mit den Werten aus werte.php"gefüllt". Erstelle nun eine Datei namens werte.php und füge dort denBeispiel Code ein.

Beispiel PHP-Code

1
2
3
4
5
6
7
<?php
$mein_test3_wert 
9876;
$mein_test4_wert 'Von PHP nach Flash';

echo 
'mein_test3_wert='.$mein_test3_wert.'&';
echo 
'mein_test4_wert='.$mein_test4_wert;
?>

Hast du alles richtig gemacht, dann steht in deinen beiden neuen Textfelder "9876" und "Von PHP nach Flash".

Werte von Flash an PHP

Diese Variante ist der Werte von Flash an Javascript Variante sehr ähnlich. Der einzige Unterschied ist eigentlich nur der, was man bei getURL(); angibt. Klick auf die Schaltfläche, die wir vorhin erstellt haben, mit der rechten Maustaste und wähle Aktionen aus. Löscht dort den ActionScript und fügt den Beispiel Code ein.

Beispiel ActionScript

1
2
3
4
on(release)
{
getURL("werte_2.php?test_3="+_root.test_3+"&test_4="+_root.test_4"php_iframe");
}

Kurze Erklärung

Als erstes übergeben wir getURL(); den Pfad zu "werte_2.php", vorhin war an dieser Stelle das javascript:.
Als zweites übergeben wir das Ziel, nämlich php_iframe, so wird unser IFrame heißen, den wir gleich erstellen werden.
Statt php_iframe kannst du auch _blank, _topoder dergleichen eintragen, doch in diesem Beispiel wollen wir, dassuns "werte_2.php" die Werte anzeigt, die wir mittels Flash an PHPsenden, deshalb auch der IFrame. Wir benötigen nun den IFrame, benutzedazu den Beispiel Code.

Beispiel HTML-Code

1
2
3
<!--bis hier kommt der HTML-Code von oben-->

<
iframe src="werte_2.php" name="php_iframe"></iframe>

Erstelle nun eine Datei namens werte_2.php und füge dort den Beispiel Code ein.

Beispiel PHP-Code

1
2
3
4
5
<?php
echo "test_3=".$_GET['test_3'];
echo 
'<br>';
echo 
"test_4=".$_GET['test_4'];
?>

"Hast du alles richtig gemacht, dann"... :-) ...dann steht im IFrame "test_3=9876" und "test_4=Von PHP nach Flash".

Das war es auch schon, sollten Fehler gefunden werden oder noch weitereFragen sein, einfach kurz ein Kommentar hinterlassen, ich antworte danndarauf.

Kommentare

kann nur zu stimmen

SUper Tutorial wollte zum grossteil zwar nur wissen wie man Werte von PHP übernimmt um DBs auszulesen^^
Aber der Rest war auch hilfreich^^

#2 - Freitag der 19 November, 2010 06:36 Uhr - Gast (Gast)

Sehr hilreich

Hallo!
Super Tutorial.
Ich bin totaler Flash-Anfänger,
komme aber super mit der Tutorial klar.

#1 - Samstag der 31 Januar, 2009 13:23 Uhr - Gast (Gast)
1

Kommentar hinzufügen

Benutzername*
E-Mail
Titel*
Dein Kommentar*
Captcha*