<?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>if( ExternalInterface.available ){ &#187; flash</title>
	<atom:link href="http://blog.sebastian-martens.de/tag/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sebastian-martens.de</link>
	<description></description>
	<lastBuildDate>Tue, 24 Aug 2010 21:06:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Dynamic Resize Flash Application Container / Flash Stage ( without external JavaScript )</title>
		<link>http://blog.sebastian-martens.de/2010/06/resize-flash-application-container/</link>
		<comments>http://blog.sebastian-martens.de/2010/06/resize-flash-application-container/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 12:29:32 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ExternalInterface]]></category>
		<category><![CDATA[resize]]></category>
		<category><![CDATA[resize stage]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=459</guid>
		<description><![CDATA[[Update: Add complete Flash Builder project source files. ] If you have dynamic content within your Flash application or you have several states or &#8220;pages&#8221; implemented, which all have different content, it might be helpful to resize your flash aplication container within the html- context. For this it&#8217;s not enough to resize the application from [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F06%2Fresize-flash-application-container%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F06%2Fresize-flash-application-container%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>[<strong>Update</strong>: Add complete Flash Builder project source files. ]<br />
If you have dynamic content within your Flash application or you have several states or &#8220;pages&#8221; implemented, which all have different content, it might be helpful to resize your flash aplication container within the html- context. For this it&#8217;s not enough to resize the application from within the flash application. You also have to resize the surrounding html container. This is the <em>object</em> tag for Mozilla browsers or the <em>embed</em> tag, if the client uses the Internet Explorer.</p>
<p>In each case you have to use the ExternalInterface. You call it from the flash application with parameters for the new height and width value of the flash container. On the other side you have to define an javascript function which do the resize operation with these values.</p>
<p>Here is an AS3 class which already includes the JavaScript part. Soyou don&#8217;t have to define an extra JS function. So you just have to import the AS3 class into your project and your ready to resize you application from Flash.<span id="more-459"></span></p>
<p>There are three methods to call:</p>
<ul>
<li><b><em>resize</em></b>:This method takes two parameters <em>height</em> and <em>width</em> to completly set the absolute height and width of the flash application.</li>
<li><b><em>addHeight</em></b>: Takes one integer parameter. The value will be added to the current height. So &#8220;50&#8243; for 50px more height or &#8220;-20&#8243; for 20px less in height.</li>
<li><b><em>addWidth</em></b>: Takes one integer parameter. The value will be added to the current width. So &#8220;50&#8243; for 50px more width or &#8220;-20&#8243; for 20px less in width.</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * resizes the flash container to needed dimensions 
 * @param height - new needed height 
 * @param width - new needed with
 */</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> resize<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">height</span>:<span style="color: #0066CC;">int</span>, <span style="color: #0066CC;">width</span>:<span style="color: #0066CC;">int</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * adds a specific value (+/-) to current height
 * @param valueHeight
 */</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addHeight<span style="color: #66cc66;">&#40;</span> valueHeight:<span style="color: #0066CC;">int</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * adds a specific value (+/-) to current width
 * @param valueHeight
 */</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addWidth<span style="color: #66cc66;">&#40;</span> valueWidth:<span style="color: #0066CC;">int</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></pre></div></div>

<p>To resize your application you could add an resize event handler to check specific containers for resize and do the resizing via this class in the event handler method. If you have fixed sizes per state you could of course also do it the static way.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * @author: Sebastian Martens; sebastian@sebastian-martens.de
 * @copyright: Creative Commons. Free to use &quot;as is&quot;
 * 
 * Test Application
 */</span> 
package<span style="color: #66cc66;">&#123;</span>
&nbsp;
	<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">nonstatics</span>.<span style="color: #006600;">swfSelfResize</span>.<span style="color: #006600;">swfSelfResize</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
&nbsp;
	<span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span>frameRate=<span style="color: #ff0000;">&quot;31&quot;</span>, <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;500&quot;</span>, <span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;100&quot;</span>, <span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">&quot;0x008866&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> swfSelfResizeTest <span style="color: #0066CC;">extends</span> Sprite<span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> resize:swfSelfResize;
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * constructor
		 */</span> 
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> swfSelfResizeTest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">resize</span> = <span style="color: #000000; font-weight: bold;">new</span> swfSelfResize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// resize to 500px height, 400px width</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">resize</span>.<span style="color: #006600;">resize</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">400</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// add 50px height -&gt; 550px height </span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">resize</span>.<span style="color: #006600;">addHeight</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">50</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// remove 10px width -&gt; 390px</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">resize</span>.<span style="color: #006600;">addWidth</span><span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">10</span> <span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><a href='http://blog.sebastian-martens.de/wp-content/uploads/2010/06/com1.zip'>Download com.nonstatics.swfSelfResize.as (12kB)</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2010/06/bin-debug.zip'>Download bin-debug (20kB)</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2010/06/swfSelfResize.zip'>Full Flash Builder Project (131kB)</a></p>
<p>Be aware of the security model of the flash player! This won&#8217;t work on local filesystem (file://xyz). So please use it on your server (http://www.yourdomain.com) or with your locally installed testserver (http://localhost/whatever).</p>
<p>Hope this helps you.</p>
<p>cheers,<br />
Sebastian</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2010/06/resize-flash-application-container/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Quick start with Flash ExternalInterface class</title>
		<link>http://blog.sebastian-martens.de/2010/05/quick-start-with-flash-externalinterface-class/</link>
		<comments>http://blog.sebastian-martens.de/2010/05/quick-start-with-flash-externalinterface-class/#comments</comments>
		<pubDate>Fri, 21 May 2010 08:52:45 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[ExternalInterface]]></category>
		<category><![CDATA[flash javascript bridge]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=406</guid>
		<description><![CDATA[The ExternalInterface class allows you to communicate with the Flash wrapping container, which is usually the HTML page with JavaScript capeability. It allows you to send data from ActionsScript to JavaScript and vice versa. The ExternalInterface class is implemented for nearly all current browsers. Please see the documentation for a detailed list of the supported [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F05%2Fquick-start-with-flash-externalinterface-class%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F05%2Fquick-start-with-flash-externalinterface-class%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>The <a href="http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/external/ExternalInterface.html" rel="nofollow">ExternalInterface</a> class allows you to communicate with the Flash wrapping container, which is usually the HTML page with JavaScript capeability. It allows you to send data from ActionsScript to JavaScript and vice versa.</p>
<p>The ExternalInterface class is implemented for nearly all current browsers. Please see the documentation for a detailed list of the supported browsers <a href="http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/external/ExternalInterface.html" rel="nofollow">here</a>.</p>
<p>All five attributes and methods are static, so you don&#8217;t need an instance of this class.</p>
<h4>Make sure ExternalInterface is available</h4>
<p>When using the ExternalInterface you should make sure it&#8217;s available. So please test the boolean value <em>ExternalInterface.available</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> ExternalInterface.<span style="color: #006600;">available</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
  ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span> .... <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><span id="more-406"></span></p>
<h4>Call JavaScript from ActionScript</h4>
<p>To call a JavaScript function from ActionScript you just the the method <em>ExternalInterface.call</em>. First argument must be the function name of the JavaScript method you would like to call. All other parameters will hand over as parameters to the JavaScript method. These parameters should be primitive types like String, Number or even simple Object.</p>
<p>JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> myJSFunction<span style="color: #009900;">&#40;</span> param1<span style="color: #339933;">,</span> param2<span style="color: #339933;">,</span> param3 <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> param1 <span style="color: #339933;">+</span> <span style="color: #3366CC;">': '</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span> parseInt<span style="color: #009900;">&#40;</span>param2<span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> parseInt<span style="color: #009900;">&#40;</span>param3<span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #006600; font-style: italic;">// parseInt is definetly the nicer way</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>ActionScript:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">private</span> <span style="color: #003366; font-weight: bold;">function</span> externalInterfaceTest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">void</span><span style="color: #009900;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> a<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> <span style="color: #CC0000;">4</span><span style="color: #339933;">;</span>
   <span style="color: #003366; font-weight: bold;">var</span> b<span style="color: #339933;">:</span>int <span style="color: #339933;">=</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
   <span style="color: #003366; font-weight: bold;">var</span> c<span style="color: #339933;">:</span>String <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Hello World&quot;</span><span style="color: #339933;">;</span>
&nbsp;
   ExternalInterface.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;myJSFunction&quot;</span><span style="color: #339933;">,</span> c<span style="color: #339933;">,</span> b<span style="color: #339933;">,</span> a <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>This will show up an alert window with text and calculated numbers.</p>
<p>The <em>call</em> method will also handle return values of the JavaScript method. At least for this you should be aware of the security model of the flash player, otherwise you might get an <em>null</em> value instead the expected result. Therefore please set the flash parameter <em>allowScriptAccess</em> to <em>always</em> and the allowed domain within your flash application.</p>
<p>HTML:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
   &lt;embed allowScriptAccess=&quot;sameDomain&quot; [...]</pre></div></div>

<p>SWFObject:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> params <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
   params.<span style="color: #660066;">allowscriptaccess</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;always&quot;</span><span style="color: #339933;">;</span>
swfobject.<span style="color: #660066;">embedSWF</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;flvplayer.swf&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;videoPlayer&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;650&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;530&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;9.0.28&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;expressInstall.swf&quot;</span><span style="color: #339933;">,</span> flashvars<span style="color: #339933;">,</span> params<span style="color: #339933;">,</span> attributes<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Flash App:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">Security</span>.<span style="color: #0066CC;">allowDomain</span><span style="color: #66cc66;">&#40;</span> yourDomain <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>If you configured that way you will be able to recieve return values from your JavaScript function and use them in your ActionScript method.</p>
<p>JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> myJSFunction<span style="color: #009900;">&#40;</span> val <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;JavaScripts says: &quot;</span> <span style="color: #339933;">+</span> val<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>ActionScript:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> exInterfaceTest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> ExternalInterface.<span style="color: #006600;">available</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span> ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;myJSFunction&quot;</span>, <span style="color: #ff0000;">&quot;Hello World&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>; 
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<h4>Call ActionScript method from JavaScript</h4>
<p>Its also possible to start the other way round, that you call an ActionScript method from an JavaScript function. Therefor you have to register an callback function within your AS code. You will connect any method name with an existing method.</p>
<p>This is done with the <em>addCallback</em> method. First argument is any function name you like. This will be the function you could call within JavaScript. The second argument is an function reference or closure which should be handle the call. All arguments will be passed to this method.</p>
<p>The JavaScript side function is an object of the flash wrapping container ( Object-Element / Embed-Element ) which should be referenced by it&#8217;s id/name. Also for this direction arguments and return values are possible.</p>
<p>HTML/JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"> <span style="color: #339933;">&lt;</span>script language<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;JavaScript&quot;</span><span style="color: #339933;">&gt;</span>
     <span style="color: #003366; font-weight: bold;">var</span> init <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> flashObjId <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;myExInterfaceTest&quot;</span><span style="color: #339933;">;</span>
&nbsp;
     <span style="color: #006600; font-style: italic;">// flash is initialised and AS methods could be called</span>
     <span style="color: #003366; font-weight: bold;">function</span> flashReady<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         init <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
         callAsMethod<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
&nbsp;
     <span style="color: #003366; font-weight: bold;">function</span> callAsMethod<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003366; font-weight: bold;">var</span> objRef<span style="color: #339933;">;</span>
&nbsp;
         <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> window<span style="color: #009900;">&#91;</span> flashObjId <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             <span style="color: #006600; font-style: italic;">// none microsoft</span>
             objRef <span style="color: #339933;">=</span> window<span style="color: #009900;">&#91;</span>flashObjId<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
             objRef <span style="color: #339933;">=</span> document<span style="color: #009900;">&#91;</span>flashObjId<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
&nbsp;
         <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> objRef.<span style="color: #660066;">jsCallHandler</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;myArguments&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
 <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
 <span style="color: #339933;">&lt;/</span>head<span style="color: #339933;">&gt;</span>
 <span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&lt;</span>object classid<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;</span>
             id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;myExInterfaceTest&quot;</span> width<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;100&quot;</span> height<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;100&quot;</span>
             codebase<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab&quot;</span><span style="color: #339933;">&gt;</span>
         <span style="color: #339933;">&lt;</span>param <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;movie&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test.swf&quot;</span> <span style="color: #339933;">/&gt;</span>
         <span style="color: #339933;">&lt;</span>param <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;allowScriptAccess&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;sameDomain&quot;</span> <span style="color: #339933;">/&gt;</span>
         <span style="color: #339933;">&lt;</span>embed src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;test.swf&quot;</span> quality<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;high&quot;</span>
             width<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;100&quot;</span> height<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;100&quot;</span> <span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;myExInterfaceTest&quot;</span> align<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;middle&quot;</span>
             allowScriptAccess<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;sameDomain&quot;</span> pluginspage<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.macromedia.com/go/getflashplayer_de&quot;</span><span style="color: #339933;">&gt;</span>
         <span style="color: #339933;">&lt;/</span>embed<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&lt;/</span>object<span style="color: #339933;">&gt;</span>
&nbsp;
 <span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span></pre></div></div>

<p>ActionScript part:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// This method is called when initialisation is finished and application is ready</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> initCompleteHandler<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> ExternalInterface.<span style="color: #006600;">available</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
       ExternalInterface.<span style="color: #006600;">addCallback</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;jsCallHandler&quot;</span>, javaScriptHandlerMethod <span style="color: #66cc66;">&#41;</span>;
       ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;flashReady&quot;</span> <span style="color: #66cc66;">&#41;</span>;
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span> 
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> javaScriptHandlerMethod<span style="color: #66cc66;">&#40;</span> arg <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;ActionScript says:&quot;</span> + arg <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>For a large number of JavaScript calls from ActionScript to JavaScript i regular use the <a href="/jscallstack">jsCallStack</a> class which implements an stack of javascript calls to handle this timed and avoid doubled calls. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2010/05/quick-start-with-flash-externalinterface-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preload assets with JavaScript, load-complete callback for single assets include SWF/Flash</title>
		<link>http://blog.sebastian-martens.de/2010/05/preload-assets-with-javascript-load-complete-callback-for-single-assets-include-swfflash/</link>
		<comments>http://blog.sebastian-martens.de/2010/05/preload-assets-with-javascript-load-complete-callback-for-single-assets-include-swfflash/#comments</comments>
		<pubDate>Sat, 15 May 2010 13:02:42 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flash callback]]></category>
		<category><![CDATA[flash loaded event]]></category>
		<category><![CDATA[Preloader]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=383</guid>
		<description><![CDATA[Currently i need to know within JavaScript when a SWF-file was loaded completly. You could easily handle this with a single ExternalInterface call from within the Flash-application. This is not a very nice solution if this has to be done for each of you flash-applications. This is the neccesary way if you also have to [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F05%2Fpreload-assets-with-javascript-load-complete-callback-for-single-assets-include-swfflash%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2010%2F05%2Fpreload-assets-with-javascript-load-complete-callback-for-single-assets-include-swfflash%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Currently i need to know within JavaScript when a SWF-file was loaded completly. You could easily handle this with a single ExternalInterface call from within the Flash-application. This is not a very nice solution if this has to be done for each of you flash-applications. This is the neccesary way if you also have to access the flash-application from outside. But in my case i just need to know when the flash is loaded and available in the browser cache. </p>
<p>For this i wrote the <em>swfJSPreLoader</em>. This preloader accepts an array of assets you would like to preload. Internally it will create an flash-application which does the preloading. You could define several callback handlers. So JavaScript gets to know when all assets are loaded or each single asset is loaded including SWF-files.<span id="more-383"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
	<span style="color: #003366; font-weight: bold;">var</span> swfJSPreLoaderConfig <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #3366CC;">'_swfPath'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'./'</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// configure path to preloader SWF file</span>
&nbsp;
		<span style="color: #3366CC;">'assets'</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>	<span style="color: #3366CC;">'assets/teaser.swf'</span><span style="color: #339933;">,</span>
				 	<span style="color: #3366CC;">'assets/img2.jpg'</span><span style="color: #339933;">,</span>
				 	<span style="color: #3366CC;">'--error--'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #3366CC;">'assetLoaded'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> asset<span style="color: #339933;">,</span> bytes<span style="color: #339933;">,</span> <span style="color: #000066;">status</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> asset <span style="color: #339933;">+</span> <span style="color: #3366CC;">' loaded ('</span> <span style="color: #339933;">+</span> bytes <span style="color: #339933;">+</span> <span style="color: #3366CC;">')'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #3366CC;">'loadComplete'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'all assets loaded. totally loaded bytes: '</span> <span style="color: #339933;">+</span> swfJSPreLoader.<span style="color: #660066;">loadedBytes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #3366CC;">'loadError'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'load error'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #3366CC;">'callback'</span><span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			swfJSPreLoader.<span style="color: #660066;">addAsset</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'assets/teaser2.swf'</span><span style="color: #339933;">,</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> <span style="color: #000066;">status</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
															<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'teaser2 loaded status:'</span> <span style="color: #339933;">+</span> <span style="color: #000066;">status</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
														<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&nbsp;
&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;swfJSPreLoader.js&quot;&gt;&lt;/script&gt;</pre></div></div>

<p>To use the swfJSPreLoader you have to include three js files for swfObjects, JQuery and the swfJSPreLoader.js. You also have to define an JS variable <em>swfJSPreLoaderConfig</em> to configure the preloader. The config-variable could hold the following items:</p>
<ul>
<li><strong><em>assets</em></strong>: assets is an array of the assets which should be loaded. The asset-paths must be relative the html page. If you insert wrong asset pathes you could define an error handler. The assets array is optional. You could also add assets via method call.</li>
<li><strong><em>assetLoaded</em></strong>: assetLoaded defines the callback method for each loaded asset. So this method will be called each time an asset is loaded completly. There are three parameters. <em>asset</em> &#8211; gives the asset-path; <em>bytes</em> &#8211; gives the number of loaded bytes of the current asset; <em>status</em> &#8211; gives the loading status ( 200: Ok, 404: Loading error )</li>
<li><strong><em>loadComplete</em></strong>:The loadComplete callback method will be called after the queue of assets to load is empty. Not all assets need be loaded successfully. If not the error-callback will be fired.</li>
<li><strong><em>loadError</em></strong>:The loadError callback will be triggered if the current asset could not be loaded correctly.</li>
<li><strong><em>callback</em></strong>:With callback you could register a method which is called after the initialization of the swfJSPreLoader. After this method is called you could use the public methods of the pre loader.</li>
</ul>
<p>There are two public methods of the swfJSPreLoader. Both methods are ready after the callback method is called and the initialisation is ready ( the loader flash is instanziated ).</p>
<p><strong><em>swfJSPreLoader.addAsset</em></strong>: The <em>addAsset</em> method allows you to add a single asset to add to the loading queue. It takes to parameters. The first is the path to the asset, the second is the callback handler, which will be fired after this specific asset was loaded. The callback will also be called if the loading fails. The callback gets one argument <em>status</em> with the loading status ( 200: Ok, 404: Loading error ).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/**
 * @public 
 * 
 * adds asset to loading queue
 * @param {String} assetPath - path to assets to load
 * @param {Function} callback - optional callback handler when loading is complete
 */</span>
addAsset<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> assetPath<span style="color: #339933;">,</span> callback <span style="color: #009900;">&#41;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">swfJSPreLoader.<span style="color: #660066;">addAsset</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'assets/teaser2.swf'</span><span style="color: #339933;">,</span>
						<span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> <span style="color: #000066;">status</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
							<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'teaser2 loaded status:'</span> <span style="color: #339933;">+</span> <span style="color: #000066;">status</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
						<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong><em>swfJSPreLoader.loadedBytes</em></strong>: The <em>loadedBytes</em> method returns the number of total loaded bytes.</p>
<p>Update 2009-05-17:<a href='http://blog.sebastian-martens.de/wp-content/uploads/2010/05/swfJSPreLoader.zip'>swfJSPreLoader Flash Builder Project Sourcefiles (ZIP, 553kb)</a></p>
<p>Update 2009-05-17:<a href='http://blog.sebastian-martens.de/wp-content/uploads/2010/05/swfJSPreLoader-Test1.zip'>swfJSPreLoader-Test (ZIP, 532kb)</a></p>
<p>I hope this is helpfull for anybody.</p>
<p>cheers,<br />
Sebastian</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2010/05/preload-assets-with-javascript-load-complete-callback-for-single-assets-include-swfflash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Use your Wii-Remote with the FlashPlayer &#8211; WiiFlash</title>
		<link>http://blog.sebastian-martens.de/2009/08/use-your-wii-remote-with-the-flashplayer-wiiflash/</link>
		<comments>http://blog.sebastian-martens.de/2009/08/use-your-wii-remote-with-the-flashplayer-wiiflash/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 20:12:43 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[com.nonstatics.GestureDetection]]></category>
		<category><![CDATA[Gesture Detection]]></category>
		<category><![CDATA[joa ebert]]></category>
		<category><![CDATA[lowpass filter]]></category>
		<category><![CDATA[Motion Detection]]></category>
		<category><![CDATA[Nintendo]]></category>
		<category><![CDATA[Thibault Imbert]]></category>
		<category><![CDATA[Wii]]></category>
		<category><![CDATA[Wii Remote Control]]></category>
		<category><![CDATA[WiiFlash]]></category>
		<category><![CDATA[Wiimote]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=204</guid>
		<description><![CDATA[You maybe know the Nintendo Wii and its controller the Wiimote. Joa Ebert and Thibault Imbert implement a AS3 package called WiiFlash which allows you to connect the Wiimote ( or Wii Remote Control ) with your Flash/Flex Application. The Wiimote uses several sensors to detect different motion values. It allows you to read the [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F08%2Fuse-your-wii-remote-with-the-flashplayer-wiiflash%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F08%2Fuse-your-wii-remote-with-the-flashplayer-wiiflash%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.flexughh.de/referenten/" style="border:0; padding:0; margin:0;"><img src="http://www.flexughh.de/images/ads/flexughh_speaker_234_60.jpg" width="234" height="60" border="0" title="Speaker at Adobe Flex User Group Hamburg - Germany" style="border:0; padding:0; margin:0 10px 5px 0; " align="left"/></a>You maybe know the <a href="http://www.wii.com/">Nintendo Wii</a> and its controller the Wiimote. <a href="http://www.joa-ebert.com/">Joa Ebert</a> and <a href="http://www.bytearray.org/">Thibault Imbert</a> implement a AS3 package called <a href="http://wiiflash.bytearray.org/">WiiFlash</a> which allows you to connect the Wiimote ( or Wii Remote Control ) with your Flash/Flex Application.</p>
<p>The Wiimote uses several sensors to detect different motion values. It allows you to read the acceleration value for X-,Y-, Z-axis and Roll, Pitch and Yaw, which is the rotation around the x-,y- and z-axis. So you have a lot more degrees of freedom than with a simple mouse or keyboard. A funny thing you could implement with this for example is <a href="http://www.youtube.com/watch?v=PfrKkPLXWYk">WiiSpray</a>, which also uses the WiiFlash Lib.</p>
<p>The WiiFlash package consists of two parts. The first one is the WiiFlash Server. It&#8217;s written in C++ / .NET and handles the communication with the Wiimote. The second part is the WiiFlash ActionScript API, which gives you methods and events to get and handle the Wiimote data.<br />
<span id="more-204"></span><br />
The Wiimote communicates via Bluetooth with its endpoint. So the WiiFlash Server connects to your PCs or Mac Bluetooth stack and reads the data from the Bluetooth connection. This data are send via Socketconnection to the Flash Player. The WiiFlash AS3 API now converts the Wiimote binary protocoll into useable data. Which means you could directly read the values and also get update and/or change events if anything happens.</p>
<p><strong>Connect the Wiimote</strong><br />
The WiiServer is available for PC or Mac. At first you have to connect your Wiimote with your PC or Mac. That means you have to create a Bluetooth connection between them &#8211; pair them via Bluetooth. After this step the WiiFlash Server should be able to find the Bluetooth connection and create the connection to the Flash Player. Find a detailed description how to connect your Wiimote with your PC <a href="http://wiiflash.bytearray.org/?page_id=25">here</a>.</p>
<p>After you could pair your PC/Mac with the Wiimote, disconnect the Wiimote and start the WiiFlash Server. When the server started connect your Wiimote again ( this is done by pressing the Buttons &#8220;1&#8243; + &#8220;2&#8243; of your Wiimote at the same time ). After a short time you should see the connected Wiimote at the WiiFlash Server. It shows you the Batterylevel and the Wiimote-ID. Both Server versions could connect up to four Wiimotes at the same time. </p>
<p>I did not test the WiiFlash under Windows Vista. But wit OSX 10.5.x you&#8217;ll get an Java error when you start the server:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Cannot launch Java application.  <span style="color: #006633;">Uncaught</span> exception in main method<span style="color: #339933;">:</span> 
java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">IllegalStateException</span><span style="color: #339933;">:</span> Bluetooth failed to initialize.  
<span style="color: #006633;">There</span> is probably a problem with your local Bluetooth stack or API.</pre></div></div>

<p>You just have to declare the WiiFlash Server as 32bit application. Just open the file properties ( Apple + i ) and check the 32bit-mode checkbox. This will fix the problem. ( Otherwise the application is launched as 64bit application ).</p>
<p>Unfortunately both server versions aren&#8217;t that stabel. From time to time the server crashes or the connection between server and Flash Player doesn&#8217;t seem to work any more. You just have to close the server, disconnect the Wiimote from your PC or Mac and restart the connection. This also helps if the rumble function or the LED setter method seem to quit their work.</p>
<p><strong>Connect the Wiimote with your Flex App</strong><br />
The WiiFlash AS3 API gives you a very clear set of methods, which gives you fully access to the Wiimote data. At first you have to create an instance of the Wiimote class. Now you could create the connection to the Wiimote and access the data.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> org.<span style="color: #006600;">wiiflash</span>.<span style="color: #006600;">Wiimote</span>;
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> wiimote:Wiimote;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	wiimote = <span style="color: #000000; font-weight: bold;">new</span> Wiimote<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/* use Event.Connect NOT WiimoteEvent.CONTROLLER_CONNECT */</span>
	wiimote.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> Event.<span style="color: #0066CC;">CONNECT</span>, connectHandler <span style="color: #66cc66;">&#41;</span>;
&nbsp;
	wiimote.<span style="color: #0066CC;">connect</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> connectHandler<span style="color: #66cc66;">&#40;</span> evt:Event <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;Wiimote is connected&quot;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>Read Wiimote data</strong><br />
The accelerator values could be accessed on to different ways. First you could read the data directly from the Wiimote-instance. This is helpful if you have an timed update interval, which handles the data. For example if you use an the enterFrame event to call a method which handles the Wiimote data:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	wiimote = <span style="color: #000000; font-weight: bold;">new</span> Wiimote<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/* get Wiimote data onEnterFrame */</span>
	<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> Event.<span style="color: #006600;">ENTER_FRAME</span>, enterFrameHandler <span style="color: #66cc66;">&#41;</span>;
&nbsp;
	wiimote.<span style="color: #0066CC;">connect</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> enterFrameHandler<span style="color: #66cc66;">&#40;</span> evt:Event <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span> wiimote.<span style="color: #006600;">sensorX</span> <span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span> wiimote.<span style="color: #006600;">roll</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>The common way is to use the Wiimote Update event. This event is fired on each update update call from the Bluetooth stack. ATTENTION: The communication works with about 100Hz. This means you will get about 100 datasets per second. This is important for how you will later work with your data, and have to be aware of performance issues if you might bad datastructures or uneffective datahandling methods.</p>
<p><strong>Write Wiimote data</strong><br />
You could not only read values from the Wiimote. You could also write two values of the Wiimote. This are the <em>led</em> and the <em>rumble</em> attribute. With the led attribute you should be able to specify which led-light on the Wiimote shines. This is not really working well, but works sometimes &#8230;<br />
You could also use the Force-Feedback of the Wiimote. Just set the <em>rumble</em> value to true and the Wiimote start vibrating. If its used this way, its vibrating all time. You could also set the <em>rumbleTimeout</em> value. The parameter is the time in milliseconds the Wiimote starts to rumble.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* set LEDs */</span>
wiimote.<span style="color: #006600;">leds</span> = Wiimote.<span style="color: #006600;">LED4</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">/* set Force Feedback - for positiv direction */</span>
<span style="color: #808080; font-style: italic;">// wiimote.rumble = ( wiimote.sensorX&gt;3 || wiimote.sensorY&gt;3 || wiimote.sensorZ&gt;3 );</span>
<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> wiimote.<span style="color: #006600;">sensorX</span><span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">||</span> wiimote.<span style="color: #006600;">sensorY</span><span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">||</span> wiimote.<span style="color: #006600;">sensorZ</span><span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	wiimote.<span style="color: #006600;">rumbleTimeout</span> = <span style="color: #cc66cc;">1000</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>Interprete the Wiimote data</strong><br />
The Wiimote controller returns the acceleration concerning to the gravity value <em>g</em>. 1g means a gravity acceleration of 9.82m/s<sup>2</sup>. The controller itself is able to detect values between -3.6g and +3.6g. </p>
<p>If the Wiimote will not be moved and rests still on the table, you will always have on value (sensorX,sensorY,sensorZ) which is -1 or +1. This is the gravity affecting on the Wiimote. This is the criteria to detect if you Wiimote is in motion or not. Therefore you could use the Euclid Normal Form. If you take the root of the sum of all squares, this will be near +1. Normally you will define a constant values which is a bit higher than exact +1 to ignore very little movements of the Wiimote.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* const to detect motion */</span>
<span style="color: #0066CC;">private</span> const THRESHOLD:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">1.01</span>;
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> wiimoteUpdateHandler<span style="color: #66cc66;">&#40;</span> evt:WiimoteEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
	<span style="color: #0066CC;">_x</span> = evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorX</span>;
	<span style="color: #0066CC;">_y</span> = evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorY</span>;
	_z = evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorZ</span>;
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> euLength:<span style="color: #0066CC;">Number</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/* check for &quot;NO MOTION&quot; */</span>
	euLength = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sqrt</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">_x</span><span style="color: #66cc66;">*</span><span style="color: #0066CC;">_x</span> + <span style="color: #0066CC;">_y</span><span style="color: #66cc66;">*</span><span style="color: #0066CC;">_y</span> + _z<span style="color: #66cc66;">*</span>_z <span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/** set Force Feedback - for positiv direction **/</span>
	wiimote.<span style="color: #006600;">rumble</span> = <span style="color: #66cc66;">&#40;</span> _x<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">||</span> _y<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">||</span> _z<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">3</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>euLength<span style="color: #66cc66;">&gt;</span>THRESHOLD<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* do something */</span> 
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>Optimize Wiimote date</strong><br />
Normally you won&#8217;t directly use the rough data from the Wiimote. Because the detection is relative precise you will get a lot of little peaks and a very unsmooth curve of data. If you want to detect a specific gesture or just want to transform the Wiimote motion into a motion of objects in the Flash you should parse the data. For smoothing the input data you should use a lowpass filter. It will smooth the curve by multiply the actual value with older values. In the following example a new value will only enter 10%. 90% of the value is taken from the old value.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* const for filtering values */</span>
<span style="color: #0066CC;">private</span> const FILTER_FACTOR:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0.1</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">/* high pass filter */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> highPassFilter<span style="color: #66cc66;">&#40;</span> oldValue:<span style="color: #0066CC;">Number</span>, value:<span style="color: #0066CC;">Number</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> value - lowPassFilter<span style="color: #66cc66;">&#40;</span> oldValue, value <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* low pass filter */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> lowPassFilter<span style="color: #66cc66;">&#40;</span> oldValue:<span style="color: #0066CC;">Number</span>, value:<span style="color: #0066CC;">Number</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span>  value <span style="color: #66cc66;">*</span> FILTER_FACTOR + oldValue <span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1.0</span> - FILTER_FACTOR <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> wiimoteUpdateHandler<span style="color: #66cc66;">&#40;</span> evt:WiimoteEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">_x</span> = <span style="color: #0066CC;">this</span>.<span style="color: #006600;">lowPassFilter</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">_x</span>, evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorX</span> <span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">_y</span> = <span style="color: #0066CC;">this</span>.<span style="color: #006600;">lowPassFilter</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">_y</span>, evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorY</span> <span style="color: #66cc66;">&#41;</span>;
	_z = <span style="color: #0066CC;">this</span>.<span style="color: #006600;">lowPassFilter</span><span style="color: #66cc66;">&#40;</span> _z, evt.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">sensorZ</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/* do something with the data */</span>	
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>Gesture detection</strong><br />
If you know have smooth data, which you only will process if the Wiimote is really in motion, you could start to detect gestures. One of the very simple gestures is a shift. If you just shake the Wiimote a little step right it should detect a rightshift and maybe open the next Powerpoint slide. If you shift to left left the application should go on step back. </p>
<p>For this examples you have to watch the x sensor values of the Wiimote. Because you got the accelation of the controller you will not just get on positive peak in x-direction, but you will get a positive peak in x-direction followed by a negative peak in the x-direction. This is because you start a motion in positive x-direction but than stop to motion, which is a negative accelaration. An right shift is a positive x peak followed by a negative x peak. Vice versa a left shift is a negative x peak followed by a positive x peak. </p>
<p>So the first thing to implement is a peak detection class. I do this by writing several values to a history array ( for example of the last 40 values ). I now compare the avarage of the last 2 or 3 values to the avarage of all history values. If the difference between the two avarage values exceed a specific value ( depending on how exact my motion detection should work ) a peak is detected.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * @classdescription: peak detection. detects a peak in an array of values
 * @author: Sebastian Martens - http://blog.sebastian-martens.de/
 * @SVN: $Id$
 * 
 */</span> 
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PeakDetect<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _history:Vector.<span style="color: #66cc66;">&lt;</span>Number<span style="color: #66cc66;">&gt;</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _historyLength:<span style="color: #0066CC;">int</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _kernelLength:<span style="color: #0066CC;">int</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _peakFactor:<span style="color: #0066CC;">Number</span>;
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _lastPeak:<span style="color: #0066CC;">Boolean</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/**
	 * @constructor 
	 * @param kernelLength Number of values which represent the actual motion
	 * @param historyLength Number of values which are taken as history of motion 
	 * @param peakFactor If distance between history and actual motion greater than this value motion is detected
	 * 
	 */</span>		
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PeakDetect<span style="color: #66cc66;">&#40;</span> kernelLength:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">2</span>, historyLength:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">32</span>, peakFactor:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0.2</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span>;
&nbsp;
		_history = <span style="color: #000000; font-weight: bold;">new</span> Vector.<span style="color: #66cc66;">&lt;</span>Number<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		_kernelLength = kernelLength;
		_historyLength = historyLength;
		_peakFactor = peakFactor;
&nbsp;
		_lastPeak = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
		<span style="color: #808080; font-style: italic;">// init with 0</span>
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>i=<span style="color: #cc66cc;">0</span>;i<span style="color: #66cc66;">&lt;</span>_historyLength;i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			_history<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span> = <span style="color: #cc66cc;">0</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/**
	 * calculates the intersection value of items in the array
	 * @param startIndex to get avarage value from the history list
	 * @param length number of values which should calculate to avarage value
	 * @return avarage value
	 */</span>  
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _getIntersection<span style="color: #66cc66;">&#40;</span> startIndex:<span style="color: #0066CC;">int</span>, <span style="color: #0066CC;">length</span>:<span style="color: #0066CC;">int</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span>;
		<span style="color: #000000; font-weight: bold;">var</span> mValue:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
&nbsp;
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>i=startIndex;<span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&lt;</span><span style="color: #66cc66;">&#40;</span>startIndex+<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&amp;&amp;</span>i<span style="color: #66cc66;">&lt;</span>_historyLength<span style="color: #66cc66;">&#41;</span>;i++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			mValue += _history<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>;	
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#40;</span>mValue<span style="color: #66cc66;">/</span><span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/**
	 * tries to detect a peak in the list of value
	 * @return true if a peak was detected 
	 * 
	 */</span>		
	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _checkForPeak<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> pValue:<span style="color: #0066CC;">Number</span>;
		<span style="color: #000000; font-weight: bold;">var</span> aValue:<span style="color: #0066CC;">Number</span>;
		<span style="color: #000000; font-weight: bold;">var</span> peakVal:<span style="color: #0066CC;">Number</span>;
		<span style="color: #000000; font-weight: bold;">var</span> multiPl:<span style="color: #0066CC;">int</span>;
&nbsp;
		pValue = _getIntersection<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,_historyLength<span style="color: #66cc66;">&#41;</span>;
		aValue = _getIntersection<span style="color: #66cc66;">&#40;</span> _historyLength-_kernelLength, _kernelLength <span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> aValue<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			peakVal = <span style="color: #66cc66;">&#40;</span>aValue-pValue<span style="color: #66cc66;">&#41;</span>;
			multiPl = <span style="color: #cc66cc;">1</span>;
		<span style="color: #66cc66;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #66cc66;">&#123;</span>
			peakVal = <span style="color: #66cc66;">&#40;</span>pValue-aValue<span style="color: #66cc66;">&#41;</span>;
			multiPl = -<span style="color: #cc66cc;">1</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#40;</span> peakVal<span style="color: #66cc66;">&gt;</span>_peakFactor <span style="color: #66cc66;">&#41;</span>?<span style="color: #66cc66;">&#40;</span>peakVal<span style="color: #66cc66;">*</span>multiPl<span style="color: #66cc66;">&#41;</span>:<span style="color: #cc66cc;">0</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/**
	 * Adds a new value to item history. Return true if peak is detected.
	 * @param value Number-
	 * @return Boolean - 
	 */</span> 
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addValue<span style="color: #66cc66;">&#40;</span> value:<span style="color: #0066CC;">Number</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span>
		_history.<span style="color: #006600;">shift</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		_history<span style="color: #66cc66;">&#91;</span> <span style="color: #66cc66;">&#40;</span>_historyLength-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#93;</span> =  value;
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #0066CC;">this</span>._checkForPeak<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Finally you could now decide on the order of the different peaks which type of gesture it should be. Therefore i use a timer. If one peak is detected the timer starts. If another peak is detected within the runtime of the timer a gesture is detected if the peak order fits to a gusture.</p>
<p>Please find attached a example FlashBuilder Project which consists serveral steps with examples. Including the WiiFlash framework and my GestureDetection library.</p>
<p><a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/08/WiiFlashTest.zip'>WiiFlashTest &#8211; FlashBuilder Project</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/08/com.nonstatics.GestureDetection.zip'>com.nonstatics.GestureDetection &#8211; Gesture Detection Library for WiiFlash v0.1</a></p>
<p>cheers,<br />
Sebastian</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2009/08/use-your-wii-remote-with-the-flashplayer-wiiflash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash / Flex Events in den letzten Tagen</title>
		<link>http://blog.sebastian-martens.de/2009/06/flash-flex-events-in-den-letzten-tagen/</link>
		<comments>http://blog.sebastian-martens.de/2009/06/flash-flex-events-in-den-letzten-tagen/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 20:37:24 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[André Michelle]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flash Catalyst]]></category>
		<category><![CDATA[Flash Summer Camp]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flex User Group Berlin]]></category>
		<category><![CDATA[Flex User Group Hamburg]]></category>
		<category><![CDATA[Flex User Group Hannover]]></category>
		<category><![CDATA[flexughh]]></category>
		<category><![CDATA[Gumbo]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=181</guid>
		<description><![CDATA[Hallo und Humppa!, in den letzten Tag gabs es mal wieder eine geballte Ladung von Flash und Flex für mich. 10.06.2009 &#8211; Flex User Group Meeting Hannover: Auch wenn die Runde bei unseren Hannoveraner ( FXUG Hannover Adobe Groups ) Kollegen derzeit noch überschaubar ist, schließlich ist es noch eine ganz junge User Group, wird [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F06%2Fflash-flex-events-in-den-letzten-tagen%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F06%2Fflash-flex-events-in-den-letzten-tagen%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hallo und Humppa!,</p>
<p>in den letzten Tag gabs es mal wieder eine geballte Ladung von Flash und Flex für mich.</p>
<p><strong>10.06.2009 &#8211; Flex User Group Meeting Hannover:</strong><br />
Auch wenn die Runde bei unseren Hannoveraner ( <a href="http://groups.adobe.com/groups/12346b454c/summary">FXUG Hannover Adobe Groups</a> ) Kollegen derzeit noch überschaubar ist, schließlich ist es noch eine ganz junge User Group, wird Engagement und Niveau groß geschrieben. An diesem Mittwoch hat sich die Gruppe bei den <a href="http://www.projektionisten.de/">Projektionisten</a> in Hannover getroffen. Dort wird gerade für Kunden an 3D-Visualisierung gearbeitet. Der erste Vortrag ging daher über die ersten Schritte in 3D im Rahmen des Flex Frameworks. Derzeit sind derzeit nur ein paar Translationen und Rotationen und wird den 3D Frameworks wie Papervision3D oder Away3D derzeit noch nicht das Wasser abgraben können, aber künftig sicher druch einer nativeren Unterstützung durch den Flash Player 10 in Sachen Performance helfen können.<span id="more-181"></span><br />
Im Vortrag 2 ging es um Performance Tipps. Was sollte ich in ActionScript 3 beachten um eine saubere und schnelle Applikation zu entwickelt. Eigentlich ein Dauerbrenner in der Entwicklung. Der Vortrag entwickelte sich zu einer spannenden Diskussion, zu der jeder etwas beizutragen hatte. Wer also im Großraum Hannover an Flex interressiert ist, sei die Flex User Group Hannover ans Herz gelegt.</p>
<p><strong>14.06.2009 Flash Camp Berlin</strong><br />
Die Flex User Group Berlin hat sich alle Mühe gegeben und ein super Community Event auf die Beine gestellt. Mit einem ausgewogenen Programm, dass sich ganz ausdrücklich nicht nur an Entwickler sondern auch an Designer und eigentlich alle anderen wendet könnte sich das <a href="http://www.flex-labs.de/flashcamp/">Flash Summer Camp Berlin</a> sehen lassen. Das Event ging von 11.00 Uhr bis ca. 21.30 Uhr war kostenlos und das bei freiem Essen und Getränken.<br />
Die Palette der Vorträge ging von der Vorstellung von Flex Startups über Entwicklungsmethoden /-organisation, 3D Frameworks oder Andre Michelles immer wieder begeisternde Audio-Meisterstücke bis hin zum neuen Flash Builder und Flash Catalyst, die Duane Nickull und Sven Claar vorgestellt haben.<br />
Noch einmal ein herzliches Dankeschön an Bettina und Mathias von der Flex UG Berlin für diesen klasse Community Tag in Berlin. </p>
<p><strong>16.06.2009 Flex User Group Meeting Hamburg</strong><br />
Wenn Duane Nickull schon mal in Deutschland ist, dann muss man das natürlich auch ausnutzen. Da er bereits in Berlin zu Gast war hatte er sich auch bereiterklärt einen kleinen Vortrag in Hamburg zu halten. Die Mitglieder der User Group konnten auf der Webseite zwischen drei Themen <a href="http://www.flexughh.de/2009/05/28/flexughh-meeting-16062009-duane-nickull/">abstimmen</a> die Sie interesierten. Letztendlich siegte das Thema &#8220;Webservices&#8221;. Duane ließ sich aber nicht davon abhalten zu einem großen Rundumschlag auszuholen, der dann noch eine kleine Einfühung zu Flex 4 / Flash Builder enthielt, sowie einen kleinen Einblick in den Workflow in Flash Catalyst. An dieser Stelle noch einmal herzlichen Dank an Duane Nickull für den Vortrag und IBM / <a href="http://www.fruendt-online.ded/wordpress/">Boris Fruendt</a> für die Location.<br />
Das nächste Flex UG HH Meeting findet bereits am 30.06. statt. Hier wird Sven Claar dann ausgiebig über Flex 4, Flash Builder und Flash Catalyst berichten. Alle Infos wie immer auf dem <a href="http://www.flexughh.de/2009/06/15/flexughh-meeting-30062009-flex-4-tour-sven-claar-everything-about-flex4-flash-builder-catalyst/">Flex UG HH Blog</a>.</p>
<p>Die Präsentationsunterlagen von Duane:<br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/06/ServiceClients-FB4_TEACHERSGUIDE.pdf'>Flash Builder &#8211; Building Service Clients &#8211; Teachers Guide</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/06/Flex4-WHatsNew.pdf'>Präsentation: Flex 4 &#8211; What&#8217;s new</a></p>
<p>cheers,<br />
Sebastian</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2009/06/flash-flex-events-in-den-letzten-tagen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>swfInputs: Solving Mozilla + Transparent Mode + Win + Special Chars within inputs</title>
		<link>http://blog.sebastian-martens.de/2009/05/swfinputs-solving-mozilla-transparent-mode-win-special-chars-within-inputs/</link>
		<comments>http://blog.sebastian-martens.de/2009/05/swfinputs-solving-mozilla-transparent-mode-win-special-chars-within-inputs/#comments</comments>
		<pubDate>Fri, 29 May 2009 19:30:43 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ExternalInterface]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[inputs]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[opaque]]></category>
		<category><![CDATA[Player]]></category>
		<category><![CDATA[special characters]]></category>
		<category><![CDATA[swfInputs]]></category>
		<category><![CDATA[transparent mode]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wmode]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=159</guid>
		<description><![CDATA[As you probably know the Flash Player uses three different types of modes an Flash movie is embedded in the browser window. Its is set via the wmode parameter in the embed or param tag. &#60;param name=&#34;wmode&#34; value=&#34;transparent&#34; /&#62; &#60;embed wmode=&#34;transparent&#34; ... With the transparent mode you can influence the relation between the Flash movie [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F05%2Fswfinputs-solving-mozilla-transparent-mode-win-special-chars-within-inputs%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F05%2Fswfinputs-solving-mozilla-transparent-mode-win-special-chars-within-inputs%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>As you probably know the Flash Player uses three different types of modes an Flash movie is embedded in the browser window. Its is set via the <em>wmode</em> parameter in the embed or param tag.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">  &lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;
  &lt;embed wmode=&quot;transparent&quot; ...</pre></div></div>

<p>With the transparent mode you can influence the relation between the Flash movie an the surrounding HTML. If the set the wmode to window the Flash movie will always lay on top of the rest of the page. This is absolutly helpfull if your application is &#8220;standalone&#8221;, means the only center of user interaction or if you have an full window application ( at least with full screen ).<br />
But often you have other HTML elements around the Flash movie which are at the same level of user interaction and might be as important as the Flash movie ( Best example might by fly-out menus which has to overlay all other content. Or maybe confirm messages which are not realized by the JavaScript confirm-dialog ). If you use <em>wmode</em> window html elements will always behind the Flash movie (setting the html z-index has no effect ), so there is no real interaction between HTML/JavaScript an the Flash movie. For this you need <em>wmode</em> equals <em>transparent</em>.<br />
<span id="more-159"></span><br />
wmode transparent allows an equal mixture between Flash and HTML/ JavaScript. Just as the parameters sounds, the Flash movie will also have an transparent background and let the behind HTML shine through. Attention: The transaparent background is expensive in performance. Use it carefully.<br />
The third mode after <em>window</em> and <em>transparent</em> is <em>opaque</em>. The opaque also allows the mix of Flash and HTML/ JavaScript, but has now transparent background.</p>
<p>Since the introduction of these two modes (<em>transparent, opaque</em>) there is a bug with Mozilla based Browsers and textfields on Window plattforms. If you try to enter special character &#8211; famoused example is the @ &#8211; in text fields it wont work. This is very uncomfortable if you want to have a user login where you use e-mail adresses as username ( @see <a href="http://bugs.adobe.com/jira/browse/FP-479">Adobe Bug Base</a> ).</p>
<h3>swfInput</h3>
<p>My solution to solve this issue is called swfInputs. It uses the ExternalInterface class of the Flash player. swfInputs is a an AS3 which extends the Flex TextInput class. It communicates with an JavaScript class. This will create normal HTML Inputfields and places it exactly above the original Flash Inputfield.<br />
On entering text in the overlay-HTML-Inputfield the text will be transfered via ExternalInterface into the Flash movie and the corresponding Flash Inputfield. For the Flash application this mechanism is transparent because the access to the field and change events on the input field will still work.</p>
<p>The JavaScript class will only generate the overlay input field if its necessary, means on the Mozilla-Windows-Combination. Other browsers will use the normal Flash movie inputs.</p>
<p>The styles (height, width, border, colors ) which you set on the Flash Input will be transfered to the HTML-Input and set via CSS styles. For further styling like background images you could of course also use standard CSS.</p>
<p>swfInputs also support multiple Flash movies within on HTML page and have an &#8220;point-to-point&#8221; connection between the overlaying HTML-Input and the Flash-Input. So there is no general keylogger on the complete HTML page, which might cause problems with your JavaScript functions. This also means that you could have different Flash movies on one page ( which might also communicate to each other via LocalConnection ) where each movie could have its own TextInputs. </p>
<h3>What to do in your code?</h3>
<p>swfInputs consists of two parts:</p>
<ul>
<li>The SWFTextInput AS3 Class (which create the connection to the JavaScript class)</li>
<li>and the swfInputs JavaScript Class (which handles the creation and HTML communication)</li>
</ul>
<p>To activate the JavaScript part you just need to insert two script-tags into the HTML code and call the constructor method. At the moment swfInputs uses the dojoToolkit JavaScript library for position calculation and basic connection handling. I looking forward to remove this need of dojo to reduce the filesize.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;script src=&quot;../javascript/dojo.js&quot; language=&quot;javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;../javascript/swfInputs.js&quot; language=&quot;javascript&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
			swfInputs.init('swfInputTestcase');
&lt;/script&gt;</pre></div></div>

<p>The String-value int the constructor call is the channel-name. This is optional if you just use on single instance within the HTML-page.</p>
<p>Within you Flash/ Flex application you have to use the SWFTextInput class for textfields instead of TextInput. The SWFTextInput class uses the <a href="/2009/03/how-to-handle-massive-externalinterface-calls-jscallstack/">JSCallStack</a> to optimize the JavaScript communiaction ( which could be a lot on fast typing, so its recommanded to use it ).</p>
<p>A basic Flash/ Flex app could look like this. You see there is nothing very special instead of the <strong><em>swfInputs:SWFTextInput</em></strong> class.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>mx:Application 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: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;400&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;600&quot;</span> backgroundAlpha=<span style="color: #ff0000;">&quot;0.5&quot;</span> <span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">&quot;#674523&quot;</span>
	initialize=<span style="color: #ff0000;">&quot;init()&quot;</span> xmlns:swfInputs=<span style="color: #ff0000;">&quot;com.nonstatics.swfInputs.*&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:Script<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
			<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">Alert</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// </span>
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> clickHandler<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
				Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;swfInput01: &quot;</span>+swfInput01.<span style="color: #0066CC;">text</span>+<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>+
						   <span style="color: #ff0000;">&quot;swfInput02: &quot;</span>+swfInput02.<span style="color: #0066CC;">text</span>+<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>+
						   <span style="color: #ff0000;">&quot;swfInput03: &quot;</span>+swfInput03.<span style="color: #0066CC;">text</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>mx:Script<span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:VBox x=<span style="color: #ff0000;">&quot;10&quot;</span> y=<span style="color: #ff0000;">&quot;10&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
		<span style="color: #66cc66;">&lt;</span>mx:TextInput <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;160&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#674523&quot;</span> <span style="color: #0066CC;">text</span>=<span style="color: #ff0000;">&quot;{ swfInput01.text + swfInput02.text }&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
		<span style="color: #66cc66;">&lt;</span>swfInputs:SWFTextInput id=<span style="color: #ff0000;">&quot;swfInput01&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#ff0000&quot;</span> fontFamily=<span style="color: #ff0000;">&quot;Verdana&quot;</span> <span style="color: #66cc66;">/&gt;</span>
		<span style="color: #66cc66;">&lt;</span>swfInputs:SWFTextInput id=<span style="color: #ff0000;">&quot;swfInput02&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#00ffff&quot;</span> fontFamily=<span style="color: #ff0000;">&quot;Arial&quot;</span> <span style="color: #66cc66;">/&gt;</span>
		<span style="color: #66cc66;">&lt;</span>swfInputs:SWFTextInput id=<span style="color: #ff0000;">&quot;swfInput03&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#0000ff&quot;</span> fontFamily=<span style="color: #ff0000;">&quot;Times&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
		<span style="color: #66cc66;">&lt;</span>mx:<span style="color: #0066CC;">Button</span> label=<span style="color: #ff0000;">&quot;Senden&quot;</span> click=<span style="color: #ff0000;">&quot;clickHandler()&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;/</span>mx:VBox<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;/</span>mx:Application<span style="color: #66cc66;">&gt;</span></pre></div></div>

<h3>Download Files (swfInputs 1.0)</h3>
<p><a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/05/swftextinput.as'>SWFTextInput.as</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/05/swfinputs.js'>swfInputs.js</a><br />
<a href='http://blog.sebastian-martens.de/wp-content/uploads/2009/05/swfinputtestproject.zip'>SWFInputs Eclipse Testproject (ZIP)</a></p>
<p>Please feal free to leave some comments and let me know if its helpful or what should be done for future releases.</p>
<p>cheers,<br />
Sebastian</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2009/05/swfinputs-solving-mozilla-transparent-mode-win-special-chars-within-inputs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>FFK09 &#8211; Day02</title>
		<link>http://blog.sebastian-martens.de/2009/04/ffk09-day02/</link>
		<comments>http://blog.sebastian-martens.de/2009/04/ffk09-day02/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 22:52:20 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[André Michelle]]></category>
		<category><![CDATA[ffk09]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashforum]]></category>
		<category><![CDATA[frank reitberger]]></category>
		<category><![CDATA[joa ebert]]></category>
		<category><![CDATA[Malte Beyer]]></category>
		<category><![CDATA[Mario Klingemann]]></category>
		<category><![CDATA[Nicolas Cannasse]]></category>
		<category><![CDATA[stefan nitzsche]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=118</guid>
		<description><![CDATA[Hallo und Humppa nach Norddeutschland, Tag 2. Nach einem doch längeren Abend als geplant im Studio 672 &#8211; der offiziellen Aftershowparty zur FFK &#8211; ging es heute morgen weiter im Text. &#8220;Interface Design &#8211; Best Practices&#8221; &#8211; Die FFK09 ist ja nun ausdrücklich keine reine Entwicklerkonferenz. Es geht um die Verschmelzung von Code und Design. [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F04%2Fffk09-day02%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F04%2Fffk09-day02%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hallo und Humppa nach Norddeutschland,</p>
<p>Tag 2. Nach einem doch längeren Abend als geplant im Studio 672 &#8211; der offiziellen Aftershowparty zur FFK &#8211; ging es heute morgen weiter im Text. </p>
<p>&#8220;Interface Design &#8211; Best Practices&#8221; &#8211; Die FFK09 ist ja nun ausdrücklich keine reine Entwicklerkonferenz. Es geht um die Verschmelzung von Code <strong>und</strong> Design. Der für mich beste Vortrag der in die Kategorie &#8220;Design&#8221; fällt war definitiv dieser. <a href="http://nitzsche.info/">Stefan Nitzsche</a> die großen Probleme und die wichtigsten goldenen Regeln des Interfacedesigns ( nicht das ich mir anmaßen würde alle zu kennen und das wirklich beurteilen könnte, dass es die wichtigsten Regeln sind &#8211; aber ich alle schon mal gehört und erfolgreich wieder verdrängt ) in einem optisch inhaltlich und presentatorisch wertvollen Vortrag zusammengefasst. Prädikat besonders wertvoll.<span id="more-118"></span></p>
<p>Unter dem Titel &#8220;Einblicke in den Werkzeugkasten eines ActionScript Profis&#8221; hat Malte Beyer von den Powerflashern ( hat sich da eigentlich jemals jemand Gedanken gemacht das das im englischen schon ziemlich suboptimal ist ?! Flasher = Flitzer [ i.d.R. unbekleidet ] ) einen exemplarischen Workflow &#8211; wie er auch bei den Powerflashers vollzogen wird &#8211; für das Zusammenspiel von Designer und Entwicklern under Verwendung von <a href="http://fdt.powerflasher.com/">FDT</a> und <a href="ant.apache.org/ivy/">Ivy-Ant-Task</a> gegeben. Immer sehr interessant zu sehen wie man es noch machen kann, und dabei noch Zeit spart &#8230; </p>
<p>Während im einen Saal unter dem Titel &#8220;Silverlight 3 Sneak Peak&#8221; die Vertreter der anderen Plattform mit Sicherheit viel Platz zum Tennisspielen hatten, drängte sich das Publikum zusammen um an den &#8220;10 Hot Minutes&#8221; teilzuhaben. Denn wenn das Flashforum ruft dann folgen dem alle Großen. Und nun durften die Mal zeigen was man alles mit der Flash Plattform machen kann wenn man dem Status des Normalsterblichen entwachsen ist. Frank Reitberger, Joa Ebert, Nicolas Cannasse, André Michelle und Mario Klingemann hatten jeweils 10 Minuten Zeit das Publikum zu beeindrucken. </p>
<p>Frank Reitberger hat auf seine PixelBender Blobs noch eins draufgesetzt. Den Sound kann auch ein Interface sein ( was von Stefan Nitzsche allerdings ausgeklammert wurde ). Mit dem Geräusch eines Föns hat er PixelBender Effekte gesteuert die den Eindruck von Wind auf ein Bild anwendeten. In der höheren Stufe des Föns wurde die Pixel dann sogar im wahrsten Sinne des Wortes dahingefegt.</p>
<p>Joa Ebert hat in 14 Minuten ein Partikelsystem erstellt, dass mit mehreren Tausend Partikeln performanter lief als ein C-Code der mittels Alchemy eingebunden und eigentlich auch schon performant lief ( und das war mal wirklich SpeedCoding ) &#8211; ohne Worte.</p>
<p>Nicolas Cannesse hat mittels HaXe und Physics Engine den Traum eines jeden kleinen und großen Kindes erfüllt. Mit Bauklötzen auf Bauklotztürme schießen und genüßlich zusehen wie alles in sich zusammenfällt. Und der Versuch mit einer Festkörperphysik Flüssigkeiten zu simulieren&#8230;</p>
<p>André Michelle schafft es mit 30 Zeilen Code und einer Klasse eine Guitarre aus dem Nichts zu erzeugen. Er demonstriert wie man eine zufälliges Nichts ( White Noise ) in Bytecode so mit kleinen Filter bearbeitet, dass es wirklich wie eine echte Guitarrenseite klingt. Noch ein paar Zeilen und Regler dazu in Jimmy Hendrix konnte einpacken! ( Audio-Design!  ) </p>
<p>So wie André Michelle seinen Narren an Tönen gefressen hat kommt Mario Klingemann nicht von seiner Bildbearbeitung los. In seinen hot 10 minutes ging er unter die Fälscher und erstellte einen Van-Gough-Filter für Bilder.</p>
<p>Nach der Mittagspause ging es weiter mit &#8220;What is SWF?&#8221;.  Nicolas Cannesse nahm einmal den SWF Bytecode auseinander, bzw. wie dieser überhaupt erstellt wird. Ein wenig Werbung für HaXe war an dieser Stelle durchaus erlaubt, das an der ein oder anderen Stelle besseren OptCode erzeugt als Adobes AS-Compiler.</p>
<p>In dem vorletzten Vortrag ging es bei Andrè Michelle natürlich um Töne. Hier durfte mal in den Source vom Audiotool geguckt werden. Wie erzeugt man ein Delay im AS Code und wo kommen die Töne eigentlich her. Und natürlich gabs auch eine C64 Sounddemo. Amazing :)</p>
<p>Im letzten Vortrag hat Mario Klingemann nochmal den Werdegang eines digitalen Kunstwerks vollzogen. Welche kleinen Gedankenspiele und Codeschnipsel sind nötig, bzw. fügen sich später zu einem Großen und Ganzen zusammen &#8211; es gab also jede Menge bunte Bilder zu sehen &#8211; sehr passend und ein eindrucksvoller Abschluss für die FFK09 im Mediapark in Köln.</p>
<p>Vielen, vielen Dank an Marc Thiele und Sasche Wolter. Great Job. Well done. See you next year.</p>
<p>cheers,<br />
Sebastian </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2009/04/ffk09-day02/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FFK09 &#8211; Day 01</title>
		<link>http://blog.sebastian-martens.de/2009/04/ffk09-day-01/</link>
		<comments>http://blog.sebastian-martens.de/2009/04/ffk09-day-01/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 19:20:40 +0000</pubDate>
		<dc:creator>Sebastian.Martens</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[ffk09]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashforum]]></category>
		<category><![CDATA[frank reitberger]]></category>
		<category><![CDATA[joa ebert]]></category>
		<category><![CDATA[marc thiele]]></category>
		<category><![CDATA[sasche wolters]]></category>
		<category><![CDATA[sven brencher]]></category>
		<category><![CDATA[tom krcha]]></category>

		<guid isPermaLink="false">http://blog.sebastian-martens.de/?p=112</guid>
		<description><![CDATA[Hallo und Humppa nach Norddeutschland, für alle die die es in diesem Jahr nicht zur großartigen Flashforum Konferenz nach Köln geschafft haben sei versichert &#8211; ihr habt etwas verpasst! Wieder einmal haben sich Marc Thiele und Sascha Wolters alle Mühe gegeben ein bunten Strauss an Vorträgen Rund um Kreativität in der Flash-Welt zu organisieren &#8211; [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right;margin:0px 0px 0px 0px;"></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F04%2Fffk09-day-01%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.sebastian-martens.de%2F2009%2F04%2Fffk09-day-01%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hallo und Humppa nach Norddeutschland,</p>
<p>für alle die die es in diesem Jahr nicht zur großartigen Flashforum Konferenz nach Köln geschafft haben sei versichert &#8211; ihr habt etwas verpasst! Wieder einmal haben sich <a href="http://www.marcthiele.com/blog/">Marc Thiele</a> und <a href="http://www.wolter.biz/">Sascha Wolters</a> alle Mühe gegeben ein bunten Strauss an Vorträgen Rund um Kreativität in der Flash-Welt zu organisieren &#8211; es ist erst Tag 1, aber es ist bereits gelungen.<br />
<span id="more-112"></span><br />
Die Keynote hielt Adobe Evangelist <a href="http://www.webkitchen.be/">Serge Jespers</a>. Er gab eine breite Übersicht über die Flash Plattform. Wie weit ist Flash verbreitet und welche tollen Beispiele gibt es für jeden Bereich. Besonderen anklang fanden natürlich die Augmented Reality Beispiele (war mir auch neu: <a href="http://www.livingsasquatch.com/">http://www.livingsasquatch.com/</a>, und natürlich GE <a href="http://ge.ecomagination.com/smartgrid/">http://ge.ecomagination.com/smartgrid/</a>). Dann gabs natürlich noch den Klassiker der aktuellen Adobe Präsentationen: der tolle Workflow von Photoshop über Catalyst zu Flex Builder &#8230; </p>
<p>Unter dem Titel &#8220;The Return of the Blob&#8221; zeigte <a href="http://gotballs.prinzipiell.com/">Frank Reitberger</a> was man nicht alles mit den klassischen Flash Filtern machen kann und eine ganze Reihe von Filtern für die man scheinbar nie echte Anwendung gefunden hat. Es müssen eben nicht immer nur animierte Quadrate sein, es geht auch mit Runden Ecken. Also ganz im Sinne von Web 2.0 tauschte man für eine Stunde in die Demo-Szene ab ( spitze Zungen behaupteten, die Blobs ( runde Gebilde ) erinneren mehr an aktuelle Schweinegrippe-Viren ).</p>
<p>Hinter &#8220;Audiotool Private Parts&#8221; versteckte sich der Vortrag von<a href="http://www.joa-ebert.com/"> Joa Ebert </a>der zeigte, was er eigentlich alles nicht am Audiotool von Hobnox macht. Wirklich eindrucksvoll demonstrierte er was man alles schon mal im Informatikstudium gemacht hat und es auch durchaus einsieht und für sinnvoll hält, aber in den eigenen Projekten zu wenig einsetzt: vernünftige Datenstrukturen! Das Audiotool lebt in den wenigsten Fällen tatsächlich durch hochoptimierten Code sondern durch die Wahl der geeignten Datenstruktur, wie sie auch in Joas <a href="http://wiki.joa-ebert.com/">ActionScript- Wiki</a> einzug halten sollen oder brereits haben. Aber nicht nur hier hat das Audiotool Team guten Code produziert. Auch an anderen Stellen werden ungünstige Frameworkbestandteile durch eigene Entwicklungen ersetzt ( z.B. das Eventmodell ). Getreu dem Motto &#8220;Open minds. Open source.&#8221; wurden und werden Teile der Projekte als Open Source unter <a href="http://opensource.hobnox.com/">http://opensource.hobnox.com/</a>. bereitgestellt. Danke Hobnox ( die auch die Party gleich sponsoren ).</p>
<p>&#8220;Die Flash Video Plattform&#8221; &#8211; <a href="http://www.svenbrencher.de/">Sven Brencher</a> at its best. Das Adobe Tools universal Genie fasste den Workflow von Video innerhalb der Adobe Welt zusammen &#8211; das Ganze aber unter dem Aspekt der Semantik. Adobe Premiere liest ein Video ein und ermittelt via Speech to Text den textuellen Inhalt. Dies wird auf die Timeline gemappt &#8211; ich passe evtl. noch Keywords an. Ab durch den Media Encoder damit rein in meinen Streamingserver und in meiner Flex Endanwendung tippe ich ein Suchwort ein, dass mich dann direkt an die Stelle springen lässt, an der der Sprecher das Wort benutzt hat &#8211; wenn doch alles soooo einfach wäre &#8230; :)<br />
( <a href="http://www.slideshare.net/svenbrencher/flash-video-plattform">Die Slides gibt es hier</a> )</p>
<p>Ein hab ich noch: &#8220;Creating Realtime Flash Apps&#8221; &#8230;. war im Grunde der Anschlussvortrag zu Sven. Tom Krcha ging hier allerdings nochmal ein wenig tiefer auf die verschieden (Streaming) Server von Adobe ein. Was geht mit Blaze DS / LiveCycle oder FMS und welche Protokolle erlauben mir was und warum. Immer wieder toll ist aber natürlich die Kommunikation der einzelnen Flashplayer 10 untereinander. Einmal durch Adobe Stratus aufeinander aufmerksam gemacht kann das P2P-Netzwerk losgehen &#8230; </p>
<p>Auf einen spannenden zweiten Tag !</p>
<p>cheers,<br />
Sebastian </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sebastian-martens.de/2009/04/ffk09-day-01/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.132 seconds -->
