Pastor Pixel Tipps Tutorial Anleitungen Hilfe

Flashvars mit AS3

 

Wenn man eine SWF Datei in eine Html Datei einbettet, hat man die Möglichkeit Parameter zu vergeben.

Sämtliche Parameter, die man vergeben kann, werden bei Adobe aufgelistet.

Es gibt die Möglichkeit auch eigene Parameter zu vergeben, die dann zur Laufzeit im Player zur Verfügung stehen. Das nennt man FlashVars. Wenn man beispielsweise nur ein paar Daten übertragen will, für die sich der Aufwand des Einlesens über eine XML Datei nicht lohnt, ist FlashVars die richtige Wahl.

Das Thema FlashVars in der Adobe Hilfe. Dort befindet sich auch einfaches Beispiel zum Download.

Hier die Vorgehensweise.

Im folgenden habe ich einen Embed Tag ohne Javascript genutzt und an 2 Stellen die Flashvars eingebunden. Dort werden 2 Variablen vorname und nachname definiert. Sie werden mit kaufmännischem & verbunden.

download fla

Get Adobe Flash Player

<div id="flashContent">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="flashVars" align="middle">
<param name="movie" value="flashVars.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name=FlashVars value="vorname=Michael&nachname=Albers">
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="flashVars.swf" width="550" height="400">
<param name="movie" value="flashVars.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="play" value="true" />
<param name="loop" value="true" />
<param name="wmode" value="window" />
<param name="scale" value="showall" />
<param name="menu" value="true" />
<param name="devicefont" value="false" />
<param name="salign" value="" />
<param name=FlashVars value="vorname=Michael&nachname=Albers">
<param name="allowScriptAccess" value="sameDomain" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>

 

Actionscript 3 Code der Fla Datei

this.root.loaderInfo.addEventListener(Event.COMPLETE, SWFLoadComplete);
 function SWFLoadComplete(e:Event):void
{
 var obj:Object=this.root.loaderInfo.parameters;
  anzeige.text = String(obj.vorname)+" "+String(obj.nachname);
}

 

Man könnte auch folgendermaßen auf eine Variable zugreifen:

this.root.loaderInfo.parameters.nachname;

Einfache Lösung mit Dokumentenklasse

Hier habe ich einen Dokumentenklasse erstellt, die die Variable "myVariable" ausliest.

Der Parameter in der Html Datei sieht so aus:

<param name=FlashVars value="myVariable=Hello%20World" />

 

package 
{
	import flash.display.MovieClip;
	import flash.display.LoaderInfo;

	public class MyVar extends MovieClip
	{

		public function MyVar()
		{
			var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters.myVariable;
			text1.text = paramObj.toString();
		}

	}

}

Einlesen aller flashVars mit for-in Schleife

Actionscript 3 Code der Fla Datei siehe unten:

Mittels einer for-in Schleife werden alle flashvars-Variablen ausgelesen. Die for-in-Schleife ist in eine try-catch-Funktion eingebunden. Unter catch gibt man die Anweisungen ein, die ausgeführt werden, wenn der Versuch nicht von Erfolg gekrönt war.

try
{
	var key:String;
	var val:String;
	var vorName:String;
	var nachName:String;

	var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
	for (key in params)
	{
		val = String(params[key]);
	}
	vorName = params["vorname"];
	nachName = params["nachname"];
	anzeige.text = vorName + " " + nachName;

}
catch (error:Error)
{
	anzeige.text = "Error";
}

 


 

Startseite: www.pastorpixel.de