<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Soraxdesign &#187; ActionScript</title>
	<atom:link href="http://www.soraxdesign.de/tag/actionscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.soraxdesign.de</link>
	<description>Softwareentwicklung, Rich Internet Applications und Blog</description>
	<lastBuildDate>Sat, 04 Dec 2010 13:56:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Tutorial: Mehrsprachige Anwendungen in Flex 3</title>
		<link>http://www.soraxdesign.de/2009/10/22/tutorial-mehrsprachige-anwendungen-in-flex-3-runtime-localization/</link>
		<comments>http://www.soraxdesign.de/2009/10/22/tutorial-mehrsprachige-anwendungen-in-flex-3-runtime-localization/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 20:21:41 +0000</pubDate>
		<dc:creator>rené</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mehrsprachigkeit]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.soraxdesign.de/?p=269</guid>
		<description><![CDATA[Wer schon einmal vor der Aufgabe stand, eine Flex Projekt mehrsprachig zu gestalten, dem bieten sich beim ersten Überlegen mehrere Lösungen an:

ein Array für jede Sprache
XML Datei
eine Datenbank, mit einer Serversprache und Stream über AMF
&#8230;bestimmt noch viele weitere Lösungen

Jedoch hat sich Adobe Gedanken gemacht und eine recht elegante Lösung für Flex 3 vorgesehen: Runtime Localization [...]]]></description>
			<content:encoded><![CDATA[<p>Wer schon einmal vor der Aufgabe stand, eine Flex Projekt mehrsprachig zu gestalten, dem bieten sich beim ersten Überlegen mehrere Lösungen an:</p>
<ul>
<li>ein Array für jede Sprache</li>
<li>XML Datei</li>
<li>eine Datenbank, mit einer Serversprache und Stream über AMF</li>
<li>&#8230;bestimmt noch viele weitere Lösungen</li>
</ul>
<p>Jedoch hat sich Adobe Gedanken gemacht und eine recht elegante Lösung für Flex 3 vorgesehen: Runtime Localization mit Ressourcen. Dabei gibt es viele Vorteile:<br />
<span id="more-269"></span></p>
<ul>
<li>mehrere Ressourcen (=Sprachen) können in ein Projekt kompiliert werden</li>
<li>Ressourcen werden extern in .properties Dateien gespeichert (Trennung vom Code)</li>
<li>direktes Umschalten zwischen verschiedenen Sprachen (alle Referenzen werden sofort aktualisiert)</li>
<li>auch Sounds, Bilder können &#8220;mehrsprachig&#8221; verknüpft werden</li>
<li>zur Laufzeit können neue Ressourcen aus XML Dateien, Datenbankanfragen erzeugt werden</li>
</ul>
<p>Nun aber zum Tutorial. Erzeugt euch ein Flex 3 Projekt und editiert eure *.mxml Datei wie folgt:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;@Resource(bundle='myResources', key='SLOGAN')&quot;</span> fontSize=<span style="color: #ff0000;">&quot;20&quot;</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;40&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ComboBox</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;10&quot;</span><span style="color: #7400FF;">&gt;</span><span style="color: #7400FF;">&lt;/mx:ComboBox</span><span style="color: #7400FF;">&gt;</span></span><br />
    <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Image</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;78&quot;</span> width=<span style="color: #ff0000;">&quot;211&quot;</span> height=<span style="color: #ff0000;">&quot;193&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></div>
<p>Dabei kann man deutlich erkennen, dass hier eine Ressource mit dem Namen &#8220;myResources&#8221; und dort der Key &#8220;SLOGAN&#8221; aufgerufen wird. Schaltet ihr in die Designansicht, seht ihr, dass das der Inhalt des Attributs <em>text</em> jetzt etwas unschön quer über die Applikation ragt.<br />
Anschließend erzeugt ihr euch in eurem <em>src</em> Ordner einen Ordner <em>locale</em>, darin zwei Ordner <em>de_DE</em> und <em>en_US</em>. In diesen weiterhin jeweils eine Datei namens <strong>myResources.properties</strong> (hier ist die oben erwähnte .properties Datei, außerdem der Link vom <em>text</em> Attribut mit &#8220;myResources&#8221;). Danach sollte eure Ordnerstuktur so ähnlich aussehen:</p>
<p><img src="http://www.soraxdesign.de/wp-content/uploads/2009/10/Bildschirmfoto-2009-10-22-um-21.36.53.png" alt="Ordnerstruktur locale" title="Ordnerstruktur locale" width="267" height="200" align="center"/></p>
<p>Anschließend müsst ihr unbedingt die Kodierung der Dateien auf UTF-8 setzen. Dazu Rechtsklick auf die myResources.properties -> Eigenschaften. Hier stellt ihr das Text File Encoding auf UTF-8:</p>
<p><a href="http://www.soraxdesign.de/wp-content/uploads/2009/10/Bildschirmfoto-2009-10-22-um-21.44.27.png"><img src="http://www.soraxdesign.de/wp-content/uploads/2009/10/Bildschirmfoto-2009-10-22-um-21.44.27-300x223.png" alt="Umstellung der Kodierung auf UTF-8" title="Umstellung der Kodierung auf UTF-8" width="300" height="223"/></a></p>
<p>Damit der Compiler auch die Ressourcen findet, muss der Pfad zu diesem in dem Compileroptionen angegeben werden. Dazu öffnet ihr die Eigenschaften des Projektes, geht auf Flex Compiler und ergänzt/ersetzt dort um folgendes:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">-locale=en_US -source-path=../locale/{locale}</div></div>
<p>Damit wird dem Flex Compiler mitgeteilt, dass die Standardsprache englisch ist sowie weitere Sprachen im Ordner &#8220;locale&#8221; zu finden sind. Die &#8220;..&#8221; sind entscheidend, da der Flex Compiler einen relativen src-Pfad nimmt und nicht den absoluten wie man ihn im Projektbaum sieht. Scheint noch ein Relikt aus der Betaphase zu sein.</p>
<p>Jetzt sind alle Vorbereitungen getroffen, wenn ihr das Projekt ausführt sollte der Platzhalter <em>SLOGAN</em> durch euren Text aus der Datei en_US/myResources.properties ersetzt werden. Jedoch sprach ich noch vom direkten Umschalten zwischen mehreren Sprachen. Dazu verknüpfen wir die vorhandenen Ressources mit einer Combobox.<br />
Kurz etwas zum Hintergrund des Flex Compilers: Für jede Sprachresource muss für es einen Resource im Frameworkordner des Flex Frameworks (SDK) geben. D.h. für en_US gibt es bereits nach der Installation ein fertiges Sprachpaket unter <em>frameworks/locale/en_US/framework_rb.swc</em>. Wenn wir aber in den Compileroptionen <em>-locale=de_DE</em> angeben, erwartet der Compiler, eben dieses Sprachpaket unter <em>frameworks/locale/<strong>de_DE</strong>/framework_rb.swc</em> zu finden. Das ist aber von Hause aus nicht so. Deswegen müssen wir manuell die Resourcen für unsere Sprachen erzeugen. Diese geschieht recht simpel, indem man die vorhandene (englische) Resource dupliziert.</p>
<p>Für Windows geht dieses mit</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">bincopylocale.exe en_US de_DE</div></div>
<p>sowie unter Mac mit dem Befehl</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">bin/copylocale.sh en_US de_DE</div></div>
<p>Nun aber zur Umschaltung zwischen verschiedenen Sprachen. Folgendermaßen sieht der Code jetzt aus:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Metadata</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; [ResourceBundle(&quot;myResources&quot;)]<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Metadata</span><span style="color: #7400FF;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;mx:Script&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp;&lt;![CDATA[</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;[Bindable]</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;private var locales:Array = [ &quot;en_US&quot; , &quot;de_DE&quot; ];</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;private function localeComboBox_initializeHandler(event:Event):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;localeComboBox.selectedIndex = locales.indexOf(resourceManager.localeChain[0]);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; </span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;private function localeComboBox_changeHandler(event:Event):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Set the localeChain to either the one-element Array</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// [ &quot;en_US&quot; ] or the one-element Array [ &quot;de_DE&quot; ].</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;resourceManager.localeChain = [localeComboBox.selectedItem];</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp;]]&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp;&lt;/mx:Script&gt;</span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;{resourceManager.getString('myResources', 'SLOGAN')}&quot;</span> fontSize=<span style="color: #ff0000;">&quot;20&quot;</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;40&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ComboBox</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;10&quot;</span> id=<span style="color: #ff0000;">&quot;localeComboBox&quot;</span> dataProvider=<span style="color: #ff0000;">&quot;{locales}&quot;</span></span><br />
<span style="color: #000000;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; initialize=<span style="color: #ff0000;">&quot;localeComboBox_initializeHandler(event)&quot;</span></span><br />
<span style="color: #000000;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; change=<span style="color: #ff0000;">&quot;localeComboBox_changeHandler(event)&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Image</span> x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;78&quot;</span> width=<span style="color: #ff0000;">&quot;211&quot;</span> height=<span style="color: #ff0000;">&quot;193&quot;</span> source=<span style="color: #ff0000;">&quot;{resourceManager.getString('myResources', 'IMGSRC')}&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></div>
<p>Die wichtigste Veränderung stellt die Ersetzung aller &#8220;@Resource(bundle&#8230;.&#8221; durch &#8220;{resourceManager.getString(&#8230;&#8221; dar. Damit greift ihr direkt auf den resourceManager zu, welchem ihr über die Combobox verschiedene Sprachresourcen zuweisen könnt. Dabei ist <em>localeChain</em> der entscheidene Begriff.<br />
Im Download und der Demo findet ihr auch ein Beispiel für &#8220;mehrsprachige&#8221; Bilder. </p>
<p><a href="http://www.soraxdesign.de/examples/20091023_flex3_localization/BLOG_Localization.html">Demo</a><br />
<a href='http://www.soraxdesign.de/wp-content/uploads/2009/10/Flex3_Localization.zip'>Download Beispiel</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soraxdesign.de/2009/10/22/tutorial-mehrsprachige-anwendungen-in-flex-3-runtime-localization/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe Labs: zweite Beta von Flash Builder 4, Flash Catalyst und Flex SDK 4</title>
		<link>http://www.soraxdesign.de/2009/10/13/adobe-labs-zweite-beta-von-flash-builder-4-flash-catalyst-und-flex-sdk-4/</link>
		<comments>http://www.soraxdesign.de/2009/10/13/adobe-labs-zweite-beta-von-flash-builder-4-flash-catalyst-und-flex-sdk-4/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 13:45:44 +0000</pubDate>
		<dc:creator>rené</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Catalyst]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.soraxdesign.de/?p=237</guid>
		<description><![CDATA[Adobe hat eine neue Runde in der Betaphase eingeläutet: es gibt die zweite Beta vom Flash Builder 4, Flash Catalyst und dem Flex SDK 4. Den meisten wird das Flex SDK ein Begriff sein, somit sage ich zu den anderen beiden ein paar Worte:

Flash Builder 4 ist gewissermaßen der Nachfolger vom Flex Builder (3). Um [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe hat eine neue Runde in der Betaphase eingeläutet: es gibt die zweite Beta vom <a href="http://labs.adobe.com/technologies/flashbuilder4/"><strong>Flash Builder 4</strong></a>, <a href="http://labs.adobe.com/technologies/flashcatalyst/"><strong>Flash Catalyst</strong></a> und dem <a href="http://opensource.adobe.com/wiki/display/flexsdk/Downloads"><strong>Flex SDK 4</strong></a>. Den meisten wird das Flex SDK ein Begriff sein, somit sage ich zu den anderen beiden ein paar Worte:<br />
<span id="more-237"></span><br />
<strong>Flash Builder 4</strong> ist gewissermaßen der Nachfolger vom Flex Builder (3). Um die klare Zugehörigkeit und damit man als es Kundenberater leichter hat, einen Kunden neben Flash nicht noch mit Flex zu belasten, hat sich Adobe zu diesem Schritt der Umbenennung entschlossen. Nachzulesen sind die Gründe für diese Umbenennung bei <a href="http://www.webkitchen.be/2009/05/16/next-version-of-flex-builder-will-be-named-flash-builder-4/">Serge Jespers</a>. Über Vor- und Nachteile kann man sich gerne streiten, ich finde es schade, einen mittlerweile etablierten Namen wie Flex Builder aufzugeben.</p>
<p><strong>Flash Catalyst </strong>stellt ein völlig neues Stück Software aus dem Hause Adobe dar. Mit diesem soll die Schnittstelle zwischen Gestalter und Entwickler besser miteinander arbeiten können. Konkret soll ein Gestalter in Flash Catalyst seine Entwürfe (die meistens noch Grafiken oder zumindest Vektoren sind) mit Eigenschaften versehen z.B. eine Grafik, welche einen Button darstellen soll als Button definieren. Diese Defintion bzw. das Flash Catalyst Projekt geht dann an den Entwickler mit Flash Builder 4 (mit Flex Builder 3 soll das nicht mehr kompatibel sein), diese implementiert anschließend die Logik des Systems. Nach Ansicht von Adobe soll damit ein nahtloses Arbeiten zwischen Gestalter und Entwickler möglich sein, da GUI und Logik voneinander getrennt sind. Hier könnt ihr euch noch ein Video zu Flash Catalyst anschauen:</p>
<p><object width="425" height="256"><param name="movie" value="http://images.tv.adobe.com//swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=746&#038;context=58&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com//swf/player.swf" flashvars="fileID=746&#038;context=58&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"></embed></object></p>
<p><strong>Abschließend noch der Changelog der aktuellen Betas:</strong></p>
<p><strong>Flash Catalyst Beta 2</strong><br />
Faster performance &#8211; A noticeable performance increase over beta 1<br />
Enhanced Interface &#8211; A more refined and easier to user interface<br />
Video support &#8211; Import video files, use standard playback controls or easily create your own<br />
Sound Effects &#8211; Add sound effects to interactions<br />
More components &#8211; Convert artwork into more components such as sliders, radio buttons, scroll panel and more<br />
More interactions &#8211; Specify a URL to open during an interaction, play a video<br />
Export to AIR (in addition to SWF) &#8211; Export projects that run outside the browser using Adobe AIR.<br />
Motion Easing &#8211; Define easing for more fluid motion<br />
Filters &#8211; Apply multiple filters to alter graphics such as adding drop shadow, glow, blur and more.<br />
Blend modes &#8211; Select how objects blend with other objects<br />
Accessible Content &#8211; Create an accessible SWF file that can be used by the visually impaired.<br />
SWF control &#8211; Play a SWF file from a specific frame<br />
SWF output options &#8211; Create a SWF file that is deployable, redistributable and has fonts embedded.</p>
<p><a href="http://labs.adobe.com/wiki/index.php/Flash_Builder_4">Flash Builder 4 Beta 2</a></p>
<p>Quelle: <a href="http://blogs.adobe.com/flex/archives/2009/10/flex_4_sdk_beta_2_ready_for_do.html">http://blogs.adobe.com/flex/archives/2009/10/flex_4_sdk_beta_2_ready_for_do.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soraxdesign.de/2009/10/13/adobe-labs-zweite-beta-von-flash-builder-4-flash-catalyst-und-flex-sdk-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: ExternalInterface &#8211; Zusammenspiel von SWF und JavaScript</title>
		<link>http://www.soraxdesign.de/2009/08/24/externalinterface-zusammenspiel-von-swf-und-javascript/</link>
		<comments>http://www.soraxdesign.de/2009/08/24/externalinterface-zusammenspiel-von-swf-und-javascript/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 20:37:05 +0000</pubDate>
		<dc:creator>rené</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.soraxdesign.de/?p=170</guid>
		<description><![CDATA[Manchmal ist es nötig, SWF Dateien mit dem aktuellen Container (meistens eine umschliessende HTML Seite) korrespondieren zu lassen. Ob nun Inhalte in Formularen geändert, Seitenwechsel oder auch das Zusammenspiel mit anderen SWF Dateien geschehen soll, kann dies über JavaScript gelöst werden. Eine Schnittstelle bietet dabei die ExternalInterace Klasse von ActionScript 3.

Früher war diese Funktion unter [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist es nötig, SWF Dateien mit dem aktuellen Container (meistens eine umschliessende HTML Seite) korrespondieren zu lassen. Ob nun Inhalte in Formularen geändert, Seitenwechsel oder auch das Zusammenspiel mit anderen SWF Dateien geschehen soll, kann dies über JavaScript gelöst werden. Eine Schnittstelle bietet dabei die <em>ExternalInterace </em>Klasse von ActionScript 3.<br />
<span id="more-170"></span><br />
Früher war diese Funktion unter dem Namen <em>fscommand()</em> bekannt und hat diese ersetzt.</p>
<p>Um von JavaScript auf eine Methode in ActionScript zuzugreifen, muss diese dem Flash Player bekannt gemacht werden. Dieser erfolgt mit der Methode <em>addCallback()</em>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ExternalInterface.addCallback(&quot;setTextFromJS&quot;, setText);</div></div>
<p>Dabei wird die (JavaScript)Methode &#8220;setTextFromJS&#8221; dem Flash Player und somit dem ExternalInterface bekannt gemacht. Die zweite Variable legt die Funktion fest, die in ActionScript aufgerufen werden soll.<br />
Nun kann mit der aktuelle SWF Container in der HTML Seite über dessen Namen angesprochen werde und die Methode aufgerufen werden. Parameterübergabe funktioniert wie gehabt in JavaScript:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">function thisMovie(movieName)<br />
{<br />
if (navigator.appName.indexOf(&quot;Microsoft&quot;) != -1) {<br />
return window[movieName];<br />
} else {<br />
return document[movieName];<br />
}<br />
}<br />
function sendToActionScript(value) {<br />
thisMovie(&quot;ExternalInterfaceExample&quot;).sendToActionScript(value);<br />
}</div></div>
<p>Natürlich ist dies auch umgekehrt möglich. Über die Funktion</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ExternalInterface.call('setTextFromAS', s);</div></div>
<p>kann aus ActionScript heraus eine JavaScript Funktion aufgerufen werden mit Parameterübergabe. Soweit ich weiß, kommt immer ein String an. Der Parameter <em>s</em> kann dabei ein Wert sein, der von ActionScript an JavaScript gesendet werden soll.</p>
<p>Hier habe ich ein Beispiel online gestellt. Der übergebene Text aus dem Textfeld wird an die SWF gesendet und anschließend wieder an JavaScript und in ein zweites Textfeld geschrieben.</p>
<p><a href="http://www.soraxdesign.de/wp-content/uploads/2009/08/BLOG_ExternalApplication.html" target="_blank">Beispiel</a><br />
<a href='http://www.soraxdesign.de/wp-content/uploads/2009/08/ExternalInterfaceExample.zip'>Download des Beispielcodes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.soraxdesign.de/2009/08/24/externalinterface-zusammenspiel-von-swf-und-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

