<?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>Flex.org</title>
	<atom:link href="http://flex.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://flex.org</link>
	<description>by the Adobe Platform Evangelism Team</description>
	<lastBuildDate>Wed, 11 Apr 2012 15:41:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Upcoming Flex Events</title>
		<link>http://devgirl.org/2012/04/09/upcoming-flex-events/</link>
		<comments>http://devgirl.org/2012/04/09/upcoming-flex-events/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 17:48:44 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3767</guid>
		<description><![CDATA[If you&#8217;re looking for a great conference to attend, 360&#124;Flex is right around the corner and you should definitely make a point of checking it out. Most developers consider this to be *the* conference to attend and glancing at the schedule, you can see why. My fellow teammate, Christophe Coenraets is going to be doing [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re looking for a great conference to attend, <a href="http://www.360flex.com/">360|Flex</a> is right around the corner and you should definitely make a point of checking it out. Most developers consider this to be *the* conference to attend and glancing at the <a href="http://www.360flex.com/schedule/">schedule</a>, you can see why. My fellow teammate, Christophe Coenraets is going to be doing the keynote and has some fun in store that you will not want to miss. There will also be an update from the <a href="http://www.spoon.as/">Spoon folks</a> so you can find out all the latest and greatest information around the <a href="http://incubator.apache.org/flex/">Apache Flex</a> open source project. This year&#8217;s conference is not just Flex either, you will have the opportunity to help yourself become a more well-rounded developer and explore other technologies from the best of the best developers first hand. <a href="http://www.360flex.com/blog/2012/03/360flex-2012-not-just-flex/">This post by John Wilker</a> (who runs the show) sums up the experience well. Also, Denver is a great location and has so much to offer. It&#8217;s personally one of my favorite cities to visit, so be sure to check this one out! </p>
<p>Secondly, if you&#8217;re in or around the Dallas area, be sure to visit <a href="http://gregsramblings.com/">Greg Wilson</a> and <a href="http://www.unitedmindset.com/jonbcampos/">Jon Campos</a> at the Flex User Group meeting on April 19, 2012. Details about the event can be found <a href="http://dflex.groups.adobe.com/index.cfm?event=post.display&#038;postid=41781">here</a>!  </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http://devgirl.org/2012/04/09/upcoming-flex-events/&amp;title=Upcoming%20Flex%20Events" id="wpa2a_4"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/04/09/upcoming-flex-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Know That Your Flash Content Requires a Premium Feature License</title>
		<link>http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/</link>
		<comments>http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 18:40:57 +0000</pubDate>
		<dc:creator>Renaun Erickson</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://renaun.com/blog/?p=1663</guid>
		<description><![CDATA[A license is needed for your SWF if it uses premium features. The current premium feature that requires a license is a SWF that makes use of Stage3D and ApplicationDomain.domainMemory APIs at the same time. If only one is used without the other a license is not required. Still not sure if your application requires [...]]]></description>
			<content:encoded><![CDATA[<p>A license is needed for your SWF if it uses premium features. The current premium feature that requires a license is a SWF that makes use of <code>Stage3D</code> and <code>ApplicationDomain.domainMemory</code> APIs at the same time. If only one is used without the other a license is not required.</p>
<p>Still not sure if your application requires the license? Well there is a way to find out with using a <a href="http://www.adobe.com/support/flashplayer/downloads.html">debug version of Flash Player</a>. Starting with Flash Player 11.2 you will get a message that is rendered on top of your SWF if you require a license. Here is what it looks like:</p>
<div id="attachment_1667" class="wp-caption aligncenter" style="width: 464px"><a href="http://renaun.com/blog/wp-content/uploads/2012/03/WatermarkPremiumFeatures1.png"><img src="http://renaun.com/blog/wp-content/uploads/2012/03/WatermarkPremiumFeatures1.png" alt="" title="Premium Features Watermark" width="454" height="279" class="size-full wp-image-1667" /></a><p class="wp-caption-text">Premium Features Watermark</p></div>
<p>And here is the code to force the watermark:</p>
<div class="igBar"><span id="lactionscript-12"><a href="http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/" onclick="javascript:showPlainTxt('actionscript-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ACTIONSCRIPT:</span>
<div id="actionscript-12">
<div class="actionscript">package<br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">ApplicationDomain</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">ByteArray</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Endian</span>;</p>
<p><span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">"320"</span>,<span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">"160"</span>,<span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">"0x333333"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PremiumFeatureCheck <span style="color: #0066CC;">extends</span> Sprite<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PremiumFeatureCheck<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, addedToStageHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> addedToStageHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Stage3Ds Lenght: "</span> + <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span>.<span style="color: #0066CC;">length</span> + <span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> Event.<span style="color: #006600;">CONTEXT3D_CREATE</span>, initStage3D <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">requestContext3D</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testData:ByteArray = <span style="color: #000000; font-weight: bold;">new</span> ByteArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #006600;">endian</span> = Endian.<span style="color: #006600;">LITTLE_ENDIAN</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #0066CC;">length</span>=0xffff*<span style="color: #cc66cc;">4</span>; <span style="color: #808080; font-style: italic;">//4bytes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span>=testData;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testValue:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">123</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span> = testValue;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> readValue:<span style="color: #0066CC;">int</span> = ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>readValue+<span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//should print 123&nbsp; </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> initStage3D<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> context3D:<span style="color: #0066CC;">Object</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">context3D</span>; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>If you comment out "stage.stage3Ds[0].requestContext3D(); " or remove the domainMemory lines of code you will not see this watermark.<br />
<em><br />
<strong>NOTE</strong>: If you get a context3D error you need to make sure you have swf-version=13 and wmode="direct" <a href="http://renaun.com/blog/2011/12/an-approach-to-setting-wmode-for-stage3d-project-in-flash-builder/">set up properly to run Stage3D content</a>.</em></p>
<p><span id="more-1663"></span><br />
It's also important to note that the watermark doesn't show up until the features are used in your code. Take this code example:</p>
<div class="igBar"><span id="lactionscript-13"><a href="http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/" onclick="javascript:showPlainTxt('actionscript-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ACTIONSCRIPT:</span>
<div id="actionscript-13">
<div class="actionscript">package<br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">ApplicationDomain</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">ByteArray</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Endian</span>;</p>
<p><span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">"400"</span>,<span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">"160"</span>,<span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">"0x333333"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PremiumFeatureCheck <span style="color: #0066CC;">extends</span> Sprite<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PremiumFeatureCheck<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, addedToStageHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> addedToStageHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Stage3Ds Lenght: "</span> + <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span>.<span style="color: #0066CC;">length</span> + <span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> Event.<span style="color: #006600;">CONTEXT3D_CREATE</span>, initStage3D <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">requestContext3D</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, useDomainMemory<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> initStage3D<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> context3D:<span style="color: #0066CC;">Object</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">context3D</span>; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> useDomainMemory<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testData:ByteArray = <span style="color: #000000; font-weight: bold;">new</span> ByteArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #006600;">endian</span> = Endian.<span style="color: #006600;">LITTLE_ENDIAN</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #0066CC;">length</span>=0xffff*<span style="color: #cc66cc;">4</span>; <span style="color: #808080; font-style: italic;">//4bytes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span>=testData;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testValue:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">123</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span> = testValue;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> readValue:<span style="color: #0066CC;">int</span> = ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>readValue+<span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//should print 123&nbsp; </span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>The watermark will only show up once the <code>domainMemory</code> chunk of code is ran after clicking on the stage. </p>
<p>Here is another scenario, SWFMain.swf loads both SWFStage3DAPI.swf and SWFDomainMemory.swf, do you need a license? Yes you do, the water shows up and stays (even if you try and unload) after you have run API calls for Stage3D or ApplicationDomain.domainMemory regardless if they are from the main SWF or loaded SWFs. If you want to try it out yourself here is the source code:</p>
<p>SWFMain.as</p>
<div class="igBar"><span id="lactionscript-14"><a href="http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/" onclick="javascript:showPlainTxt('actionscript-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ACTIONSCRIPT:</span>
<div id="actionscript-14">
<div class="actionscript">package<br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObjectContainer</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Loader</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">URLLoader</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">URLRequest</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextFormat</span>;</p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SWFMain <span style="color: #0066CC;">extends</span> Sprite<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SWFMain<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, addedToStageHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; format = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextFormat</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; format.<span style="color: #0066CC;">size</span> = <span style="color: #cc66cc;">24</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; format.<span style="color: #0066CC;">color</span> = 0xffffff;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> loaderStage3D:Loader;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> loaderDomainMemory:Loader;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> format:<span style="color: #0066CC;">TextFormat</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> addedToStageHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// Create buttons</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> s:Sprite = createButton<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Load Stage3D SWF"</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s = createButton<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Load DomainMemory SWF"</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">60</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> createButton<span style="color: #66cc66;">&#40;</span>label:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:Sprite<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">text</span>:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">text</span>.<span style="color: #006600;">defaultTextFormat</span> = format;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">text</span> = label;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">width</span> = <span style="color: #cc66cc;">200</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> s:Sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0x222222, <span style="color: #cc66cc;">0</span>.<span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span>,0x000000<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">graphics</span>.<span style="color: #006600;">drawRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">240</span>, <span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, clickHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">text</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">text</span>.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">text</span>.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">8</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; addChild<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> s;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> t:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">""</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">currentTarget</span> is Sprite<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t = <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>event.<span style="color: #006600;">currentTarget</span> as DisplayObjectContainer<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getChildAt</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> as <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">text</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Click handler:"</span> + t<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>t == <span style="color: #ff0000;">"Load Stage3D SWF"</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>loaderStage3D<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D.<span style="color: #006600;">unloadAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D = <span style="color: #000000; font-weight: bold;">null</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"SWFStage3DAPI.swf"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">40</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderStage3D.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">160</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addChild<span style="color: #66cc66;">&#40;</span>loaderStage3D<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>t == <span style="color: #ff0000;">"Load DomainMemory SWF"</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>loaderDomainMemory<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory.<span style="color: #006600;">unloadAndStop</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory = <span style="color: #000000; font-weight: bold;">null</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"SWFDomainMemory.swf"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">40</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loaderDomainMemory.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">200</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addChild<span style="color: #66cc66;">&#40;</span>loaderDomainMemory<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Here is the SWFStage3DAPI.as</p>
<div class="igBar"><span id="lactionscript-15"><a href="http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/" onclick="javascript:showPlainTxt('actionscript-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ACTIONSCRIPT:</span>
<div id="actionscript-15">
<div class="actionscript">package <br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;</p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SWFStage3DAPI <span style="color: #0066CC;">extends</span> Sprite<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SWFStage3DAPI<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, addedToStageHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> addedToStageHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0x0000ff<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #006600;">drawRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"SWFStage3DAPI - Stage3Ds Lenght: "</span> + <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span>.<span style="color: #0066CC;">length</span> + <span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> Event.<span style="color: #006600;">CONTEXT3D_CREATE</span>, initStage3D <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">requestContext3D</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> initStage3D<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">stage</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> context3D:<span style="color: #0066CC;">Object</span> = <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stage3Ds</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">context3D</span>; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>Here is the SWFDomainMemory.as</p>
<div class="igBar"><span id="lactionscript-16"><a href="http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/" onclick="javascript:showPlainTxt('actionscript-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">ACTIONSCRIPT:</span>
<div id="actionscript-16">
<div class="actionscript">package <br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">ApplicationDomain</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">ByteArray</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Endian</span>;</p>
<p><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SWFDomainMemory <span style="color: #0066CC;">extends</span> Sprite<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SWFDomainMemory<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, addedToStageHandler<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; protected <span style="color: #000000; font-weight: bold;">function</span> addedToStageHandler<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0xff0000<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #006600;">drawRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; graphics.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testData:ByteArray = <span style="color: #000000; font-weight: bold;">new</span> ByteArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #006600;">endian</span> = Endian.<span style="color: #006600;">LITTLE_ENDIAN</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; testData.<span style="color: #0066CC;">length</span>=0xffff*<span style="color: #cc66cc;">4</span>; <span style="color: #808080; font-style: italic;">//4bytes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span>=testData;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> testValue:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">123</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span> = testValue;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> readValue:<span style="color: #0066CC;">int</span> = ApplicationDomain.<span style="color: #006600;">currentDomain</span>.<span style="color: #006600;">domainMemory</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"SWFDomainMemroy "</span> + readValue<span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//should print 123 </span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
                <p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a> </center></p>            ]]></content:encoded>
			<wfw:commentRss>http://renaun.com/blog/2012/03/how-to-know-that-your-flash-content-requires-a-premium-feature-license/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Mobile DateSpinner &#8211; 3/16/2012  &#8211; Episode 131 &#8211; Flextras Friday Lunch</title>
		<link>https://www.flextras.com/blog/index.cfm/2012/3/19/Flex-Mobile-DateSpinner--3162012---Episode-131--Flextras-Friday-Lunch</link>
		<comments>https://www.flextras.com/blog/index.cfm/2012/3/19/Flex-Mobile-DateSpinner--3162012---Episode-131--Flextras-Friday-Lunch#comments</comments>
		<pubDate>Mon, 19 Mar 2012 13:00:00 +0000</pubDate>
		<dc:creator>Jeffry Houser</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">https://www.flextras.com/blog/index.cfm/2012/3/19/Flex-Mobile-DateSpinner--3162012---Episode-131--Flextras-Friday-Lunch</guid>
		<description><![CDATA[				
				This week I demonstrate the Flex Mobile Date Spinner.

Flextras Friday Lunch is a short demo followed by open Q&#038;A that occur the first and third Friday of every month at 1pm EST.  The presentations take place over Connect.  You can find out w...]]></description>
			<content:encoded><![CDATA[This week I demonstrate the Flex Mobile Date Spinner.

Flextras Friday Lunch is a short demo followed by open Q&amp;A that occur the first and third Friday of every month at 1pm EST. The presentations take place <a href="http://experts.na3.acrobat.com/flextras/">over Connect</a>. You can find out what time this occurs in your own time zone at <a href="http://www.timeanddate.com/worldclock/fixedtime.html?hour=13&amp;min=0&amp;sec=0&amp;p1=98">TimeAndDate.com</a>.

I hope I can help answer some of your questions at the next one.

<strong>Notes</strong>
<ul>
	<li><a href="http://experts.adobeconnect.com/p58m5ztyjs2/">View Original Presentation</a></li>
	<li><a href="http://help.adobe.com/en_US/flex/mobileapps/WS7dd5c1363434bb702fbebf5a1312e95e4e3-8000.html">DateSpinner Documentation</a></li>
	<li><a href="https://www.flextras.com/blog/index.cfm/2012/3/19/%22<br"> http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/components/DateSpinner.html"&gt;Date Spinner ASDocs</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/03/19/flex-mobile-datespinner-3162012-episode-131-flextras-friday-lunch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Epic Games Unreal Engine in the Browser Try For Yourself</title>
		<link>http://renaun.com/blog/2012/03/epic-games-unreal-engine-in-the-browser-try-for-yourself/</link>
		<comments>http://renaun.com/blog/2012/03/epic-games-unreal-engine-in-the-browser-try-for-yourself/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 06:37:45 +0000</pubDate>
		<dc:creator>Renaun Erickson</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://renaun.com/blog/?p=1646</guid>
		<description><![CDATA[You can now try out the Epic Games Unreal engine running in the browser for yourself. All you need is the Flash Player 11.2 RC installed and then go to the http://unrealengine.com/flash/ website. Here is a screenshot of it running in Chrome on my MacBook Pro: Mark Rein form Epic Games talks about the latest [...]]]></description>
			<content:encoded><![CDATA[<p>You can now try out the Epic Games Unreal engine running in the browser for yourself. All you need is the <a href="http://labs.adobe.com/technologies/flashplatformruntimes/flashplayer11-2/">Flash Player 11.2 RC</a> installed and then go to the <a href="http://unrealengine.com/flash/">http://unrealengine.com/flash/</a> website.</p>
<p>Here is a screenshot of it running in Chrome on my MacBook Pro:<br />
<a href="http://renaun.com/blog/wp-content/uploads/2012/03/unrealbrowser.png"><img src="http://renaun.com/blog/wp-content/uploads/2012/03/unrealbrowser2.png" alt="" title="Epic&#039;s Unreal Citadel in the Browser" width="540" height="334" class="aligncenter size-full wp-image-1648" /></a></p>
<p><a href="http://venturebeat.com/2012/03/07/browser-based-games-get-real-3d-graphics-with-latest-unreal-engine-and-flash-technology/">Mark Rein form Epic Games talks about the latest Unreal demo at GDC.</a></p>
<p>At the Adobe GDC booth you can also see us show off Dungeon Defenders by Trendy which also uses the Unreal engine.<br />
<a href="http://twitpic.com/8t9l2u" title="Look at what I playing at GDC in the Adobe booth on Twitpic"><img src="http://twitpic.com/show/thumb/8t9l2u.jpg" width="150" height="150" alt="Look at what I playing at GDC in the Adobe booth on Twitpic"></a></p>
<p>What does all this mean? Check out <a href="http://gaming.adobe.com">http://gaming.adobe.com</a> for some more ideas of how AIR and Flash enable game developers to create great content.</p>
                <p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a> </center></p>            ]]></content:encoded>
			<wfw:commentRss>http://renaun.com/blog/2012/03/epic-games-unreal-engine-in-the-browser-try-for-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Game Summit 2012</title>
		<link>http://renaun.com/blog/2012/03/flash-game-summit-2012/</link>
		<comments>http://renaun.com/blog/2012/03/flash-game-summit-2012/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 03:05:40 +0000</pubDate>
		<dc:creator>Renaun Erickson</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://renaun.com/blog/?p=1632</guid>
		<description><![CDATA[Flash Game Summit is held before the big Game Developer Conference (GDC). The 2012 Flash Game Summit was a great turn out, with a wide variety of attendees. Because you get a crowd that usually comes in for GDC from around the world Flash Game Summit has people and companies from all over the world. [...]]]></description>
			<content:encoded><![CDATA[<p>Flash Game Summit is held before the big Game Developer Conference (GDC). The 2012 Flash Game Summit was a great turn out, with a wide variety of attendees. Because you get a crowd that usually comes in for GDC from around the world Flash Game Summit has people and companies from all over the world.</p>
<p>Adobe is a sponsor and this year they provided live streaming as well as recordings of the sessions. So if you were not able to attend in person you can catch some of the latest topics around gaming with the Flash platform. There were two rooms with with session through the day so here they are separate by room:</p>
<style>
table td {  border: 1px solid #333333 }
table tr.even { background: #BBBBBB; }
</style>
<table width="525" style="border: 1px solid rgb(51, 51, 51);">
<tr style="background: none repeat scroll 0% 0% rgb(85, 85, 85); color: rgb(238, 238, 238);">
<th>Title</th>
<th>Speaker</th>
<th>Recording</th>
</tr>
<tr style="background: none repeat scroll 0% 0% rgb(85, 85, 85); color: rgb(238, 238, 238);">
<th colspan="3">Robertson Auditorium</th>
</tr>
<tr>
<td>Welcome</td>
<td>Josh Larson</td>
<td><a href="http://partners-ar.adobeconnect.com/p10j7raiidd/">http://partners-ar.adobeconnect.com/p10j7raiidd/</a></td>
</tr>
<tr class="even">
<td>Flash The Next Generation</td>
<td>Lee Brimelow / Thibault Imbert</td>
<td><a href="http://partners-ar.adobeconnect.com/p84glz9113f/">http://partners-ar.adobeconnect.com/p84glz9113f/</a></td>
</tr>
<tr>
<td>SAS:  Zombie Assault 3</td>
<td>Chris Harris / Jonathan Hopcroft</td>
<td><a href="http://partners-ar.adobeconnect.com/p5g1mwjvvcu/">http://partners-ar.adobeconnect.com/p5g1mwjvvcu/</a></td>
</tr>
<tr class="even">
<td>Mobile Gaming Goes Boarderless</td>
<td>Peter Relan / Suran Markosian / Ben Savage</td>
<td><a href="http://partners-ar.adobeconnect.com/p8tzebm31ge/">http://partners-ar.adobeconnect.com/p8tzebm31ge/</a></td>
</tr>
<tr>
<td>Mochis Award Show</td>
<td>Sponsored By Armored Games</td>
<td><a href="http://partners-ar.adobeconnect.com/p515odcc3xo/">http://partners-ar.adobeconnect.com/p515odcc3xo/</a></td>
</tr>
<tr class="even">
<td>Kingdom Rush</td>
<td>Alvaro Azofra / Gonzalo Sande / Pablo Realini</td>
<td><a href="http://partners-ar.adobeconnect.com/p2am4xm3asx/">http://partners-ar.adobeconnect.com/p2am4xm3asx/</a></td>
</tr>
<tr>
<td>For Your Ice Onlye</td>
<td>Reece Millidge</td>
<td><a href="http://partners-ar.adobeconnect.com/p3fdn7cvzy4/">http://partners-ar.adobeconnect.com/p3fdn7cvzy4/</a></td>
</tr>
<tr class="even">
<td>It's The End of The World And We Know it.</td>
<td>Ben Garney</td>
<td><a href="http://partners-ar.adobeconnect.com/p9dh8z22yjw/">http://partners-ar.adobeconnect.com/p9dh8z22yjw/</a></td>
</tr>
<tr>
<td>It's A Long Way to The Top</td>
<td>David Scott / Paul Preece</td>
<td><a href="http://partners-ar.adobeconnect.com/p20c2imvu74/">http://partners-ar.adobeconnect.com/p20c2imvu74/</a></td>
</tr>
<tr class="even">
<td>Chasing China</td>
<td>Chris Shen</td>
<td><a href="http://partners-ar.adobeconnect.com/p5vzvma4a11/">http://partners-ar.adobeconnect.com/p5vzvma4a11/</a></td>
</tr>
<tr style="background: none repeat scroll 0% 0% rgb(85, 85, 85); color: rgb(238, 238, 238);">
<th colspan="3">Fisher Room</th>
</tr>
<tr>
<td>Panel: Flash Development Life 2012</td>
<td>Moderated by: Ethan Levy, Producer, BioWare San Francisco  Panelists: Sean McGee, Developer, Diseased ProductionsAndrew Sega, Lead Engineer, Sojo StudiosDan Stradwick, Developer, Monstrum</td>
<td><a href="http://partners-ar.adobeconnect.com/p9ewajrc1fq/">http://partners-ar.adobeconnect.com/p9ewajrc1fq/</a></td>
</tr>
<tr class="even">
<td>Two Dimensions of Awesome: Advanced ActionScript for Platform Games</td>
<td>Iain Lobb, Managing Creative Director, Dull Dude Ltd.</td>
<td><a href="http://partners-ar.adobeconnect.com/p71gwods77j/">http://partners-ar.adobeconnect.com/p71gwods77j/</a></td>
</tr>
<tr>
<td>Getting Some Perspective: Away3D 4.0 &#038; Friends</td>
<td>Rob Bateman, Co-Founder, Away 3D</td>
<td><a href="http://partners-ar.adobeconnect.com/p3qpzsv9gw7/">http://partners-ar.adobeconnect.com/p3qpzsv9gw7/</a></td>
</tr>
<tr class="even">
<td>Going Mobile</td>
<td>Nate Beck, Principal Architect, ZaaLabs, Ltd.</td>
<td><a href="http://partners-ar.adobeconnect.com/p4k55h49x30/">http://partners-ar.adobeconnect.com/p4k55h49x30/</a></td>
</tr>
<tr>
<td>Winning With Audio</td>
<td>Selcuk Bor, CEO &#038; Founder, Symphony of Specters</td>
<td><a href="http://partners-ar.adobeconnect.com/p3ja0j9hl6m/">http://partners-ar.adobeconnect.com/p3ja0j9hl6m/</a></td>
</tr>
<tr class="even">
<td>Ponycorns &#038; The Price of Popularity</td>
<td>Ryan Henson Creighton, President, Untold Entertainment Inc.</td>
<td><a href="http://partners-ar.adobeconnect.com/p12ns4cb8l6/">http://partners-ar.adobeconnect.com/p12ns4cb8l6/</a></td>
</tr>
<tr>
<td>Screenplay</td>
<td>Tom Vian, Freelance Game Developer, Super Flash Bros.</td>
<td><a href="http://partners-ar.adobeconnect.com/p43hdz1tfs6/">http://partners-ar.adobeconnect.com/p43hdz1tfs6/</a></td>
</tr>
</table>
<p></br></br><br />
Some take a ways for me after talking with people at the conference are there are still alot of students that are building Flash games. Although they say their teachers and schools could use some more love. If you have a large student base and doing senior gaming projects, and are thinking of using Flash as the platform feel free to reach out to me and I'll try and help as much as I can. Next thing I noticed is people are building a lot of Flash games, but people are still not quite using Stage3D in mainstream. This is for various reasons, dev cycles, Flash Player runtime releases, mobile AIR 3.2, etc... but uniformly people want to get their Flash games seen. So again if you have some great looking content, using the latest Flash Player features the better, send them my way and I'll take a look.</p>
<p>Good luck and on to a great future of Flash gaming. And if you are looking for some of the latest info check out <a href="http://partners-ar.adobeconnect.com/p84glz9113f/">Lee and Thibault session</a> above. And the new <a href="http://gaming.adobe.com">http://gaming.adobe.com</a> site to participate in the telling of the Flash for gaming story.</p>
                <p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a> </center></p>            ]]></content:encoded>
			<wfw:commentRss>http://renaun.com/blog/2012/03/flash-game-summit-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Roadmap Posted to ADC</title>
		<link>http://blogs.adobe.com/flex/2012/02/flash-roadmap-posted-to-adc.html</link>
		<comments>http://blogs.adobe.com/flex/2012/02/flash-roadmap-posted-to-adc.html#comments</comments>
		<pubDate>Wed, 22 Feb 2012 07:25:59 +0000</pubDate>
		<dc:creator>Blatt</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/flex/?p=550</guid>
		<description><![CDATA[Following quickly on the heels of the Flex White Paper, you can now find on the ADC the Adobe Roadmap for the Flash Runtimes.  The Flash white paper provides an overview of the Flash runtimes and a roadmap for their development.  This will give you some insight into our current thinking and plans around Flash functionality [...]]]></description>
			<content:encoded><![CDATA[Following quickly on the heels of the <a title="Adobe's View of Flex and its Commitment to Flex in the Future" href="http://www.adobe.com/go/flex_whitepaper">Flex White Paper</a>, you can now find on the ADC the <a title="Adobe Roadmap for the Flash Runtimes" href="http://www.adobe.com/go/flashplayer_roadmap">Adobe Roadmap for the Flash Runtimes</a>.  The Flash white paper provides an overview of the Flash runtimes and a roadmap for their development.  This will give you some insight into our current thinking and plans around Flash functionality in the Flash Player and AIR over the next one to two years.

Between these two white papers you should have a much clearer understanding of our current plans and intentions for Flex and Flash.

Be sure to come to a meeting of our Flex User Group Tour 2012 when it comes to a city near you.  You can check some of the earlier posts outlining the <a title="European Flex User Group Tour 2012" href="http://blogs.adobe.com/flex/2012/02/flex-user-group-2012-tour-european-dates.html">European</a> and <a title="North American Flex User Group Tour 2012" href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">North American</a> tour dates.

Alan Greenblatt
Senior Technical Evangelist, Adobe]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/flex/2012/02/flash-roadmap-posted-to-adc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe’s Commitments to Flex – Official Whitepaper</title>
		<link>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/</link>
		<comments>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 23:58:55 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3745</guid>
		<description><![CDATA[There have been a lot of questions about the viability and future of Flex recently, and Adobe has published an official whitepaper today detailing their support for Flex going forward. The paper also contains details regarding Flash runtime support, Flash Builder support and other Apache contributions including the Falcon compiler. I believe the paper is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://devgirl.org/wp-content/uploads/2012/02/flex.png"><img src="http://devgirl.org/wp-content/uploads/2012/02/flex.png" alt="" title="flex" width="191" height="100" class="aligncenter size-full wp-image-3750" /></a><br />
There have been a lot of questions about the viability and future of Flex recently, and Adobe has published an official whitepaper today detailing their support for Flex going forward. The paper also contains details regarding Flash runtime support, Flash Builder support and other Apache contributions including the Falcon compiler. I believe the paper is a must read and can be found <strong><a href="http://www.adobe.com/go/flex_whitepaper">HERE</a>.</strong></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/&amp;title=Adobe%E2%80%99s%20Commitments%20to%20Flex%20%E2%80%93%20Official%20Whitepaper" id="wpa2a_6"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/02/15/adobe-commitments-to-flex-whitepaper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex White Paper on ADC</title>
		<link>http://blogs.adobe.com/flex/2012/02/flex-white-paper-on-adc.html</link>
		<comments>http://blogs.adobe.com/flex/2012/02/flex-white-paper-on-adc.html#comments</comments>
		<pubDate>Wed, 15 Feb 2012 22:31:49 +0000</pubDate>
		<dc:creator>Blatt</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/flex/?p=545</guid>
		<description><![CDATA[As promised, a white paper has been published on the ADC detailing Adobe’s view of Flex and its commitments to Flex in the future.  Hopefully this should answer most if not all of your questions. You can find the Flex whitepaper here: http://www.adobe.com/devnet/flex/whitepapers/roadmap.html Note that we will also be updating previous posts to point to [...]]]></description>
			<content:encoded><![CDATA[As promised, a white paper has been published on the ADC detailing Adobe’s view of Flex and its commitments to Flex in the future.  Hopefully this should answer most if not all of your questions.

You can find the Flex whitepaper here: <a href="http://www.adobe.com/devnet/flex/whitepapers/roadmap.html">http://www.adobe.com/devnet/flex/whitepapers/roadmap.html</a>

Note that we will also be updating previous posts to point to the Flex white paper.

We hope to see you all on the Flex User Group 2012 Tour, coming soon to a city near you!

Alan Greenblatt
Senior Technical Evangelist, Adobe]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/flex/2012/02/flex-white-paper-on-adc.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cool Stuff with the Flash Platform &#8211; 2/14/2012</title>
		<link>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-2-14-2012</link>
		<comments>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-2-14-2012#comments</comments>
		<pubDate>Tue, 14 Feb 2012 13:20:19 +0000</pubDate>
		<dc:creator>Remote Synthesis</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-2-14-2012</guid>
		<description><![CDATA[OMFG! That is all I can say. I leave for a couple weeks, to attend the HTML5 Summit in Miami and a department offsite in San Jose, only to return to an enormous backlog of awesome posts from the Flash community. First off, the innovation happening in S...]]></description>
			<content:encoded><![CDATA[OMFG! That is all I can say. I leave for a couple weeks, to attend the HTML5 Summit in Miami and a department offsite in San Jose, only to return to an enormous backlog of awesome posts from the Flash community. First off, the innovation happening in Stage3D only seems to be accelerating lately as people become more comfortable with the tools it provides. Second, there seems to be a ton of interest in working with AIR and Microsoft Kinect, with multiple ANE solutions and some impressive demos. Lastly, there are a growing number of Stage3D frameworks, to the point that I decided in this issue to group posts by their framework topic. If anyone tries to tell you the Flash community is fading, just point them here. Enjoy!

<strong>Cool Stage3D Stuff</strong>

Adobe evangelist Andrew Trice ported an earlier Stage3D mobile demo to use <a href="http://www.tricedesigns.com/2012/01/26/stage3d-flex-demo-w-source/">Stage3D and Flex in a desktop browser</a> and shares the source code for the application. In all ways it is essentially identical to the mobile example, short of changing mobile-specific components.

Nicolas Chesne shares a demo of a <a href="http://blog.norbz.net/2012/02/what-i-am-working-on-right-now/">sound spectrum visualizer built with Stage3D</a> and using the FrequencyAnalyser built by Ben Stucki.

Flash Daily links to a demo with source code called <a href="http://flashdaily.net/post/17159340305/stage3d-wonderfl-16383-particles">Stage3D Wonderfl</a> that adds a particle effect to an uploaded picture and lets you rotate it and move the camera in 3D space. Flash Daily also links to a number of resources and demos for an open source (MIT) project called <a href="http://flashdaily.net/post/17375738994/nest3d-lightweight-as3-stage3d-3d-engine">Nest3D</a>, which says it is a lightweight Stage3D 3D engine. Finally, Flash Daily links to a video by Simon Morris who is working on a Kinect AS3 AIR native extension that shows <a href="http://flashdaily.net/post/17368583584/kinect-controlling-model-in-flash-stage3d">Kinect controlling model in Flash using Stage3D</a>.

Bjorn Acker shares a <a href="http://www.bjoernacker.de/3ds-max/export-characters-to-sprites-with-3ds-max/">character export script for 3ds Max</a> written in MAXScript that can be used to export characters to sprites for use with Starling or ND2D.

<em>Away3D</em>

Rob Dodson posts a video demonstration of an Away3D 4 experiment that involved <a href="http://vimeo.com/35665575">particles on a 32" 3M C3266PW multi-touch display</a>.

Niels van Dijk shares a short code hack for Away3D to <a href="http://www.dyteq.com/2ndquest/?p=201">parse embedded 3DS files without using the AssetLibrary</a>.

Adobe evangelist Serge Jespers shows a video created by Wouter Verweirder to demonstrate his AIR Native Extension that <a href="http://www.webkitchen.be/2012/01/31/kinect-stage3d-away3d-air-pure-gold/">controls a 3D model built with Stage3D on AIR using Away3D and controlled via Microsoft Kinect</a>, via his ANE.

<em>Minko</em>

Jean-Marc Le Roux posts a screenshot and some code of a previous AIR 3.2, Stage3D and Minko demo, however in this case it is running on <a href="http://blogs.aerys.in/jeanmarc-leroux/2012/02/02/air-3-2-stage3d-and-minko/">Stage3D on Android</a> (specifically Android 2.2 on an HTC Desire). Jean-Marc also posts about <a href="http://blogs.aerys.in/jeanmarc-leroux/2012/01/31/shaderlab-embedding-shaders-in-a-web-page/">ShaderLab, an incredible looking visual interface for creating and editing shaders via a web interface</a> (built in Flex). He discusses one of the powerful features which is that you can share shaders with others via the tool and embed them in an web page. Finally, Jean-Marc shares a demo created by one of Aerys engineers, Alexandre Cyprien, using Minko ShaderLab that is a <a href="http://blogs.aerys.in/jeanmarc-leroux/2012/02/09/minko-shaderlab-waves-simulation-on-the-gpu-with-flash/">waves simulation on the GPU with Flash and Stage3D</a>.

Christopher Caleb was also impressed with ShaderLab and shares a demo video, created by Aerys, demonstrating some of <a href="http://www.yeahbutisitflash.com/?p=3651">what ShaderLab can do</a>.

Pierre Chamberlain shares the code and a demo for a simple <a href="http://pierrechamberlain.ca/blog/2012/01/as3-level-4-setting-2d-particle-system-agal-stage3d">2D particle system built with AGAL and Stage3D</a> that was the result of some experimenting with the technologies on his part.

Adobe evangelist Tom Krcha interviews Jean-Marc Le Roux about the <a href="http://www.flashrealtime.com/blacksun/">BlackSun game created with Stage3D</a> and Minko.

<em>ND2D</em>

With the release of version 0.9.13 of his ND2D framework, lars gerckens shares some general <a href="http://www.nulldesign.de/2012/01/30/nd2d-best-practices-how-to/">best practices and how-to's</a> for GPU-accelerated development using Stage3D. Lars also links to a number of <a href="http://www.nulldesign.de/2012/02/07/nd2d-extensions-games/">game demos, tutorials and a 2D physics extension</a> for ND2D.

Bjorn Acker posts and shares the source for an <a href="http://www.bjoernacker.de/flash/nd2d-advanced-camera-with-parallax-layers/">advanced camera with parallax layers</a> for ND2D. The demo demonstrates usage. Bjorn also shares another sample project showing how to <a href="http://www.bjoernacker.de/flash/nd2d-adding-alpha-holes/">add "alpha holes" in ND2D</a> to create an effect like fog in his game.

<em>Starling</em>

Ben demonstrates a <a href="http://www.purplesquirrels.com.au/?p=1689">painting application he built using Stage3D and Starling</a>.

<strong>Cool ActionScript/Flash Stuff</strong>

Adobe's Lee Brimelow posts a video tutorial on how to <a href="http://gotoandlearn.com/play.php?id=158">take advantage of the new mouse lock feature that was released in Flash Player 11.2</a>.

Ariel Sommeria posts a follow up to his post on <a href="http://arielsommeria.com/blog/2012/02/01/looping-audio-in-flash-part-2">looping audio in Flash</a>.

Jackson Dunstan follows up a prior post, going into more detail on <a href="http://jacksondunstan.com/articles/1713">why static variables and functions are slow</a>. Jackson also tests his <a href="http://jacksondunstan.com/articles/1719">repeatable random number function</a> and compares its performance to Math.random().

Emanuele Feronato continues his tutorial series on using StencylWorks for creating Flash games with a post on <a href="http://www.emanueleferonato.com/2012/01/31/making-an-in-game-tutorial-with-stencylworks/">creating an in-game tutorial</a>. Emanuele also releases the source code for an older Box2D game he created called <a href="http://www.emanueleferonato.com/2012/02/06/samephysics-flash-game-source-code-released/">SamePhysics</a>.

Justin Opitz modified an existing Python script to create an <a href="http://jwopitz.wordpress.com/2012/02/01/as3-code-obfuscator/">ActionScript3 code obfuscator</a>.

<strong>Cool AIR for Desktop Stuff</strong>

Nick Kwiatkowski discusses an application he built using <a href="http://quetwo.com/2012/02/01/microsoft-kinect-and-adobe-air/">Microsoft Kinect and Adobe AIR</a> for the Michigan Historical Museum celebration of Michigan's 175th Birthday.

Justin posts about a new version of <a href="http://www.as3nui.com/airkinect-v1-7/">AIRKinect, version 1.7, was released</a>. Wouter posts the upcoming AIRKinect 2 release which will include <a href="http://www.as3nui.com/airkinect-2-point-cloud-features/">point cloud features</a>.

<strong>Cool Mobile &amp; Devices Stuff</strong>

Barbara Kaskosz discusses and posts a sample application, with source, on <a href="http://www.flashandmath.com/mobile/swv/">displaying web content within an AIR mobile app</a>. She covers navigateToURL(), which would leave your application, and StageWebView, which would display web content within your application.

Bill Sanders covers the <a href="http://www.as3dp.com/2012/01/actionscript-3-0-gestureevent-working-with-gestures-on-mobile/">GestureEvent and how to work with gestures on mobile</a> using ActionScript and AIR. Bill also discusses using a <a href="http://www.as3dp.com/2012/02/the-grid-state-movement-in-mobile/">grid state for managing movement within a game on mobile</a> employing the state design pattern.

Mark Aplet posts about a new AIR mobile application developed by ASFusion, creators of the Conqu application, called <a href="http://www.asfusion.com/blog/entry/onepound-weight-tracking-app">OnePound</a>, which is a weight tracking app.

<em>Android</em>

Michelle Rueda posts a video demo and apk of an application called <a href="http://blog.ruedaminute.com/2012/01/simmer-voice-commands-ane-for-android-demo-app/">Simmer</a> that uses a voice commands ANE for Android that she developed. In a follow up post she shares the actual <a href="http://blog.ruedaminute.com/2012/01/voice-command-adobe-native-extension-ane-control-your-air-for-android-apps-with-voice-commands/">Voice Command AIR native extension</a> and a sample application that you can use in your Android applications.

<em>iOS</em>

David Flatley starts a two part tutorial that demonstrates how to create and use <a href="http://www.davidflatley.com/2012/02/06/adobe-native-extension-for-ios-game-center-part-1/">AIR Native Extension for iOS Game Center</a>. Part one focused on creating the ANE, while <a href="http://www.davidflatley.com/2012/02/06/adobe-native-extension-for-ios-game-center-part-2/">part 2</a> shows you how to use your ANE in your AIR application.

Adobe evangelist Tom Krcha responds to a common question by covering how to <a href="http://www.flashrealtime.com/how-to-join-swf-files-air-ios/">join multiple SWF files into one for AIR on iOS</a> as was done in Machinarium. Tom also shows how to <a href="http://www.flashrealtime.com/transfer-string-number-int-uint-bool-ane/">cast Number, String, int/uint and Boolean with from AS3 to C</a> to be used in iOS for an AIR native extension. In a follow up he shows how to do the same, <a href="http://www.flashrealtime.com/transfer-cast-array-and-vector-from-as3-to-c/">casting Array and Vector from AS3 to C</a>.

<strong>Cool Flex &amp; Flash Builder Stuff</strong>

Ryan Frishberg discusses a change, due to a bug fix, in Flex 4.6's version of <a href="http://www.frishy.com/2012/02/mis-using-itemrendererfunction-and-memory-leaks/">itemRendererFunction that can cause memory leaks</a> in code that worked in 4.5, and shows how to avoid it.

<strong>Cool ColdFusion Stuff</strong>

Craig Kaminsky released an open source <a href="http://craigkaminsky.blogspot.com/2012/01/cfdynamo-cfc-wrapper-for-amazon.html">ColdFusion component (CFC) wrapper for Amazon's DynamoDB</a> NOSQL database solution.]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/02/14/cool-stuff-with-the-flash-platform-2142012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Game Performance &#8211; 2/3/2012  &#8211; Episode 125 &#8211; Flextras Friday Lunch</title>
		<link>https://www.flextras.com/blog/index.cfm/2012/2/6/Mobile-Game-Performance--232012---Episode-125--Flextras-Friday-Lunch</link>
		<comments>https://www.flextras.com/blog/index.cfm/2012/2/6/Mobile-Game-Performance--232012---Episode-125--Flextras-Friday-Lunch#comments</comments>
		<pubDate>Mon, 06 Feb 2012 16:24:00 +0000</pubDate>
		<dc:creator>Jeffry Houser</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">https://www.flextras.com/blog/index.cfm/2012/2/6/Mobile-Game-Performance--232012---Episode-125--Flextras-Friday-Lunch</guid>
		<description><![CDATA[
				
				In the first 2012 session; I spoke about how I finally got my first mobile game, Igor Knots and the Magonda Maze to perform really well on mobile devices.

Flextras Friday Lunch is a short demo followed by open Q&#038;A that occur the first and th...]]></description>
			<content:encoded><![CDATA[
				
				<p>In the first 2012 session; I spoke about how I finally got my first mobile game, <a href="https://market.android.com/details?id=air.com.igorKnots.magondaMaze&hl=en">Igor Knots and the Magonda Maze</a> to perform really well on mobile devices.

Flextras Friday Lunch is a short demo followed by open Q&A that occur the first and third Friday of every month at 1pm EST.  The presentations take place <a href="http://experts.na3.acrobat.com/flextras/">over Connect</a>.  You can find out what time this occurs in your own time zone at <a href="http://www.timeanddate.com/worldclock/fixedtime.html?hour=13&min=0&sec=0&p1=98">TimeAndDate.com</a>.

I hope I can help answer some of your questions at the next one.
</p>

<p><b>Notes</b><br>
</p>
<ul>
<li><a href="http://experts.adobeconnect.com/p6lj5q7810v/">View Original Presentation</a></li>
</ul> 
				]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/02/06/mobile-game-performance-232012-episode-125-flextras-friday-lunch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Cool Stuff with the Flash Platform &#8211; 1/27/2012</title>
		<link>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-27-2012</link>
		<comments>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-27-2012#comments</comments>
		<pubDate>Fri, 27 Jan 2012 14:45:11 +0000</pubDate>
		<dc:creator>Remote Synthesis</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-27-2012</guid>
		<description><![CDATA[A busy week (or so) of posts. The hot topic lately seems to be not just Stage3 but specifically 2D game development using Stage3D. Each week seems to bring upates to new or existing game engines and frameworks for 2D game development as well as tutoria...]]></description>
			<content:encoded><![CDATA[A busy week (or so) of posts. The hot topic lately seems to be not just Stage3 but specifically 2D game development using Stage3D. Each week seems to bring upates to new or existing game engines and frameworks for 2D game development as well as tutorials on the topic. This week is no exception.

<strong>Cool Stage3D Stuff</strong>

A <a href="http://blog.flash-core.com/?p=771">new version the Genome2D framework (version 0.3.5) was released</a> and includes a number of new features including texture filtering, texture pivots and a number of new components. In addition, a demo is shared showing the work on a <a href="http://blog.flash-core.com/?p=740">Genome2D physics extension</a> that is being developed.

Aymeric Lamboley announces a new version of the <a href="http://www.aymericlamboley.fr/blog/citrusengine-goes-stage3d-with-starling/">CitrusEngine for 2D games that supports Stage3D and Starling</a>. In addition, the new version includes new objects, a level manager and class for storing game data.

Jean-Marc Le Roux of Aerys shows how to achieve a <a href="http://blogs.aerys.in/jeanmarc-leroux/2012/01/23/single-pass-cel-shading/">cell shading effect in a single pass</a> on 3D objects using Minko, Stage3D and Flash Player 11.

Jackson Dunstan demonstrates a <a href="http://jacksondunstan.com/articles/1706">simple Stage3D-based sprite class</a> to demonstrate how Stage3D is used in 2D game frameworks such as Starling and ND2D.

Flash Daily is a great resource for seeing what the community is doing with Stage3D, and this week was no exception. The first post shows a <a href="http://flashdaily.net/post/16219339290/stage-3d-lab-virtual-3d-earth">3D Earth rendering</a> that also includes Facebook integration to map where your friends are. The next post links to an impressive demo illustrating <a href="http://flashdaily.net/post/16514877332/stage3d-lab-away3d-lighting-and-depth-of-field-filter">lighting and depth of field using Away3D</a>. Finally, this post links to a number of resources and tutorials for <a href="http://flashdaily.net/post/16406634274/flashtent-part-6-getting-started-with-away3d-4-0">getting started with Away3D 4.0</a>.

Richard Lord explains <a href="http://www.richardlord.net/blog/what-is-an-entity-framework">entity frameworks for game development</a> in the wake of his recent release of Ash for ActionScript 3.

Pete Shand shares an example of how to achieve <a href="http://peteshand.net/blog/index.php/stage3d-plus-flash-player-10-backwards-compatibility/">backwards compatibility with Flash Player 10 when using Stage3D</a> in Flash Player 11.

<strong>Cool ActionScript/Flash Stuff</strong>

Adobe's Thibault Imbert <a href="http://blogs.adobe.com/flashplayer/2012/01/introducing-flash-player-11-2-and-air-3-2-beta4.html">introduces the Flash Player 11.2 and AIR 3.2 beta4</a> and the advances the runtimes are making related to Stage3D and how this affects Flash game developers.

Andre Vanhulzen shows how to quickly <a href="http://www.vanhulzenonline.nl/techblog/2012/01/19/fast-searching-in-a-bytearray/">search for specific text in a ByteArray</a> using ActionScript 3.

Simon Bailey shows how to manage <a href="http://newtriks.com/2012/01/25/message-exchanging-using-as3-signals/">message exchanging using AS3-Signals</a> in an MVC application using a framework like Robotlegs.

Hemanth Sharma posts the first in a series of video tutorials showing how to create a <a href="http://www.hsharma.com/tutorials/video-tutorial-balloon-shooter-in-flashpunk-episode-1/">balloon shooter game using FlashPunk</a>.

Emanuele Feronato shows the <a href="http://www.emanueleferonato.com/2012/01/25/the-concept-behind-stringy-flash-game-determine-if-a-sprite-is-inside-a-lasso/">concept behind Stringy Flash game</a> and his solution for determining if the sprite you need to catch is within the lasso. Emanuele also continues his series on building Flash games using Stencylworks with a post showing how to <a href="http://www.emanueleferonato.com/2012/01/23/make-the-player-die-after-a-long-fall-with-stencylworks/">make the player die after a long fall</a>.

<strong>Cool AIR for Desktop Stuff</strong>

Jozef Chutka discusses the <a href="http://blog.yoz.sk/2012/01/ycanvas-remote-controlled-by-remotair/">Remotair</a> project and how he used it to remotely control zooming using his YCanvas project.

<strong>Cool Mobile &amp; Devices Stuff (Android, iOS, Blackberry, Television)</strong>

Adobe evangelist Michael Chaize discusses a Flex and AIR based mobile application called <a href="http://www.riagora.com/2012/01/flex-mobile-and-music-apps/">Radio X-Track</a> that he had the opportunity to help build.

Adobe evangelist Holly Schinsky shows how to create <a href="http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/">dynamic splash screens</a> using Flex 4.6 for mobile.

<em>iOS</em>

Adobe evangelist Tom Krcha highlights the <a href="http://www.flashrealtime.com/scorekeeper-ios-air/">Scorekeeper app for iOS</a> built using Adobe AIR.

Lars Gerckens discusses some <a href="http://www.nulldesign.de/2012/01/22/adobe-air-native-extensions-for-ios-learnings/">issues and tips when creating AIR native extensions for iOS</a>.

Christopher Caleb notes that if you have updated the AIR SDK for Flash Professional CS5.5, you can no longer modify the app name via the dialog box. In <a href="http://www.yeahbutisitflash.com/?p=3478">this post</a> he shows how to get around that limitation.

<strong>Cool Flex, Flash Builder &amp; Catalyst Stuff</strong>

Elad Elrom shows how to <a href="http://elromdesign.com/blog/2012/01/20/passing-variables-through-url-using-flashvars-flex-4/">pass variables via the URL using flashvars in Flex 4</a>.

Stefan Richter shows how to <a href="http://www.therealtimeweb.com/index.cfm/2012/1/20/mx-internal-usage">access the mx_internal Namespace in Flex</a>, if you must.]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/01/27/cool-stuff-with-the-flash-platform-1272012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stage3D &amp; Flex Demo w/ Source</title>
		<link>http://www.tricedesigns.com/2012/01/26/stage3d-flex-demo-w-source/</link>
		<comments>http://www.tricedesigns.com/2012/01/26/stage3d-flex-demo-w-source/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 03:21:00 +0000</pubDate>
		<dc:creator>Andrew Trice</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1442</guid>
		<description><![CDATA[Back in the summer, I was lucky enough to get my hands on some early builds of Stage3D for mobile. I built some simple examples, including basic geometric shapes and simple 3D bubble charts inside of mobile Flex/AIR applications. I have been asked numerous times for the source code, and I&#8217;ve finally given in, and [...]]]></description>
			<content:encoded><![CDATA[Back in the summer, I was lucky enough to get my hands on some early builds of Stage3D for mobile. I built some simple examples, including <a href="http://www.tricedesigns.com/2011/08/03/molehill-stage3d-on-mobile/">basic geometric shapes</a> and <a href="http://www.tricedesigns.com/2011/08/24/flex-stage3d-sample/">simple 3D bubble charts</a> inside of mobile Flex/AIR applications. I have been asked numerous times for the source code, and I’ve finally given in, and am sharing some source code.

I am not posting the full mobile application source code, since Stage3D for mobile is not yet available. However, I have ported the <a href="http://www.tricedesigns.com/2011/08/24/flex-stage3d-sample/">3D bubble chart example</a> to run in a Flex application targeting the desktop (Flash Player 11). The bubble chart example extends the concepts explored in the <a href="http://www.tricedesigns.com/2011/08/03/molehill-stage3d-on-mobile/">basic geometric shapes example</a>.

Before you say “shoot, he didn’t give us the mobile code”, let me explain… When I ported the code from the mobile project to the desktop Flex project, all I changed was code specific to the mobile Flex framework. I changed &lt;s:ViewNavigatorapplication&gt; to &lt;s:Application&gt; and the corresponding architecture changes that were required, and I changed the list item renderers to Spark item renderers based on &lt;s:Group&gt; instead of mobile item renderers.   In the mobile item renderers, all my drawing logic was done using the ActionScript drawing API.  For simplicity in the port, I just used &lt;s:Rect&gt; to add the colored regions in the desktop variant.

<strong>That is all I changed!  </strong>

<strong></strong>The stage3D code between the desktop and mobile implementations is <strong>identical</strong>.    You can see the desktop port in action in the video below:

<iframe src="http://www.youtube.com/embed/jVZcbZqDdeg?rel=0" frameborder="0" width="560" height="315"></iframe>

Or, you can test it for yourself here:
<ul>
	<li><a href="http://tricedesigns.com/portfolio/flex-stage3d/">http://tricedesigns.com/portfolio/flex-stage3d/</a></li>
</ul>
The source code was intended to be exploratory at best… I was simply experimenting with hardware accelerated content, and how it can be used within your applications.   There is one big “gotcha” that you will have to watch out for if you want Stage3D content within a Flex application… Stage3D content shows up behind Flex content on the display list.   By default, Flex apps have a background color, and they will hide the Stage3D content.   If you want to display any Stage3D content within a Flex application (regardless of web, desktop AIR, or mobile), you must set the background alpha of the Flex application to zero (0).  Otherwise you will pull out some hair trying to figure out why it doesn’t show up.

The source code for the web/Flex port of this example is available at:
<ul>
	<li><a href="http://tricedesigns.com/portfolio/flex-stage3d/Flex-Stage3D.fxp">http://tricedesigns.com/portfolio/flex-stage3d/Flex-Stage3D.fxp</a></li>
</ul>
This also requires inclusion of the Away3D library, available at:
<ul>
	<li><a href="http://away3d.com/download/">http://away3d.com/download/</a></li>
	<li><a href="https://github.com/away3d/away3d-core-fp11">https://github.com/away3d/away3d-core-fp11</a> (if you want the latest branch)</li>
</ul>
You can check out my original posts, showing Stage3D on mobile here:
<ul>
	<li><a href="http://www.tricedesigns.com/2011/08/03/molehill-stage3d-on-mobile/">basic geometric shapes</a></li>
	<li><a href="http://www.tricedesigns.com/2011/08/24/flex-stage3d-sample/">simple 3D bubble charts</a></li>
	<li><a href="http://www.tricedesigns.com/2011/08/31/project-awesome/#comments">“project awesome”</a></li>
</ul>
You can also check out a video of this code running on a mobile device (Samsung Galaxy Tab 10.1) below:
<iframe src="http://www.youtube.com/embed/6kAmC14ezE0?rel=0" frameborder="0" width="560" height="315"></iframe>
<div>Enjoy!</div>]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/01/26/stage3d-flex-demo-w-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Game Conferences I’ll be at</title>
		<link>http://renaun.com/blog/2012/01/upcoming-game-conferences-ill-be-at/</link>
		<comments>http://renaun.com/blog/2012/01/upcoming-game-conferences-ill-be-at/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 01:30:56 +0000</pubDate>
		<dc:creator>Renaun Erickson</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://renaun.com/blog/?p=1623</guid>
		<description><![CDATA[With the shift of my focus on Flash's gaming focus it means I get to attend game conferences. Adobe will have a presence at GDC and Flash Game Summit as well as other events through the year. I will be in San Francisco for both Flash Game Summit and GDC. If you haven't taken the [...]]]></description>
			<content:encoded><![CDATA[<p>With the <a href="http://renaun.com/blog/2011/11/the-gaming-side-of-renaun/">shift of my focus</a> on Flash's gaming focus it means I get to attend game conferences. Adobe will have a presence at GDC and Flash Game Summit as well as other events through the year. I will be in San Francisco for both Flash Game Summit and GDC.</p>
<p><a href="http://www.flashgamingsummit.com"><img alt="" src="http://www.flashgamingsummit.com/images/fgs-logo-small.png" title="Flash Game Summit" class="alignnone" width="163" height="65" /></a></p>
<p><a href="http://gdconf.com"><img alt="" src="http://www.gdconf.com/img/logos/download/gdc12_logo_thumb.jpg" title="GDC Conference" class="alignnone" width="214" height="144" /></a></p>
<p>If you haven't taken the time to come up to speed on Flash Player's current useful gaming features and future features check out the stuff below.</p>
<p><a href="http://www.adobe.com/devnet/flashplayer/stage3d.html">Stage3D Desktop (Currently Available)</a><br />
<a href="http://www.youtube.com/watch?v=25M7fwsR2qU">Stage3D Mobile (Coming Soon)</a><br />
<a href="http://www.youtube.com/watch?v=UQiUP2Hd60Y">Epic Unreal demo running in browser through Flash Player</a><br />
<a href="http://labs.adobe.com/technologies/flashplatformruntimes/flashplayer11-2/">(Flash Player 11.2 Beta) Mouse Lock, Right, &#038; Middle Click</a><br />
<a href="http://labs.adobe.com/technologies/flashplatformruntimes/flashplayer11-2/">Relaxing the drivers of GPU acceleration feature from 2009 to 2008 (maybe more in future releases)</a></p>
<p>There will be more information coming out over time, Flash Game Summit and GDC are a great place to come see what Adobe is doing. If you are a game developer and attending one of the conference be sure to come up to me and say hi.</p>
                <p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a> </center></p>            ]]></content:encoded>
			<wfw:commentRss>http://renaun.com/blog/2012/01/upcoming-game-conferences-ill-be-at/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Flex and the community</title>
		<link>http://www.riagora.com/2012/01/apache-flex-and-the-community/</link>
		<comments>http://www.riagora.com/2012/01/apache-flex-and-the-community/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 15:18:45 +0000</pubDate>
		<dc:creator>RIAgora</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=921</guid>
		<description><![CDATA[Flex is now an Apache project in incubation (as PhoneGap under the name &#8216;Cordova&#8217;). The community is hyper-active and it&#8217;s not a surprise. If you look at what the community has achieved around Flex since its creation, you&#8217;ll directly understand why Apache Flex will be successful. Macromedia, and then Adobe, defined Flex&#8217;s vision, launching and [...]]]></description>
			<content:encoded><![CDATA[<p>Flex is now an Apache project in incubation <em>(as PhoneGap under the name &#8216;Cordova&#8217;)</em>. The community is hyper-active and it&#8217;s not a surprise. If you look at what the community has achieved around Flex since its creation, you&#8217;ll directly understand why Apache Flex will be successful. Macromedia, and then Adobe, defined Flex&#8217;s vision, launching and promoting the concept of Rich Internet Applications. Basically, this trend promotes the development of &#8220;software-like&#8221; interfaces in web browsers. RIA can answer large organizations needs who want to migrate legacy client-server applications to a modern web architecture. That&#8217;s why the Flex community is so unique and developed very specific and valuable skills. In my opinion, the only serious competitor on that market is/was Microsoft with SilverLight: great technology combined with a huge community of software developers (VB, .Net, C++&#8230;). They even introduced the concept <em>(or the utopia)</em> or a seamless workflow between designers and developers with Blend. I guess that this healthy competition boosted the Spark architecture in Flex 4 <em>(and the birth of Flash Catalyst)</em>. JavaFX by Sun <em>(and then Oracle)</em> is also trying to embrace this market.</p>
<p>But today, the Flex community is by far the strongest one on the RIA market and it&#8217;s not only due to Adobe. Flex is still the first-choice to build RIA because it&#8217;s consistent and because&#8230; it works. You should all read <span style="color: #3366ff;"><a href="https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs" ><span style="color: #3366ff;">this fantastic article by Joao</span></a></span> <em>(RIA expert in Portugal)</em>. It&#8217;s also due to the fact that a lot of Flex developers were coming from various technical backgrounds: Java (mainly), PHP, AS3, .NET&#8230; And they tried to bring and translate their knowledge investing in areas not covered by Adobe&#8217;s engineers: data-visualization, backend integration, continuous integration, micro-architectures&#8230; As a tribute, I just wanted to summarize on one graph <em>(inspired by Michell Zappa)</em> some compelling projects developed by the community around Flex. All these projects are used by large organizations in strategic Enterprise applications. All these talents can now become official Flex contributors thanks to the Apache foundation. Flex is successful thanks to this constellation of talents, not thanks to Adobe.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/flexCommunity.png"><img class="alignnone  wp-image-923" title="flexCommunity" src="http://www.riagora.com/wp-content/uploads/2012/01/flexCommunity.png" alt="" width="570" /></a></p>
<p>Some projects are of course missing, I&#8217;m sorry for that, it&#8217;s not an exhaustive list; but this graph expresses all the efforts made by the community to make Flex a successful framework in a professional Enterprise environment. Just a few projects, such as BlazeDS, were initiated by Adobe on this map. Flex has been successful in the past thanks to the involvement of its vibrant community of talented developers&#8230; why would it change?  If you want to follow the Apache Flex project and get involved, check this page: <a href="http://incubator.apache.org/flex/" >http://incubator.apache.org/flex/</a></p>
<p><em>Thanks to all the folks who helped me build this list on Google Docs.</em></p>
<div class="tweetthis" style="text-align:left;"><p> <a  rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2012/01/apache-flex-and-the-community/&text=Apache+Flex+and+the+community&via=mchaize&related=richardxthripp,tweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2012/01/apache-flex-and-the-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Mobile Development – Dynamic Splash Screens</title>
		<link>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/</link>
		<comments>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:14:11 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3635</guid>
		<description><![CDATA[Flash Builder 4.6 includes a new feature to allow you to add a dynamic splash screen component to your mobile application. This feature will allow you to load a different image based on a few different properties you can set to ensure you get the best image for the right device. The properties you can [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder">Flash Builder 4.6</a> includes a new feature to allow you to add a dynamic splash screen component to your mobile application. This feature will allow you to load a different image based on a few different properties you can set to ensure you get the best image for the right device. The properties you can use to determine which image is displayed for the splash screen are:</p>
<p><em><strong>dpi<br />
minResolution<br />
aspectRatio</strong></em></p>
<p>You can combine these attributes as well to get the best possible image selected. It&#8217;s very easy to implement, you simple create an MXML component based on the <strong>SplashScreenImage</strong> property and include as many <strong>SplashScreenImageSource</strong> objects to cover the number of situations needed. For example, in the following code I&#8217;m setting different images depending on both<em> <strong>dpi</strong></em> and <em><strong>aspectRatio</strong></em> properties. Note that this example makes an assumption about tablets generally being 160 DPI (thus needing the bigger image), the 320 DPI being the iPhone 4 and above and most android phones at 240 and setting the image based on that. It also assumes that I want to use the landscape version of the image when the <em><strong>aspectRatio</strong></em> happens to be landscape on startup. You could also use the <em><strong>minResolution</strong></em> to further ensure that the 160 DPI is indeed a tablet etc and that will cause the the stage width and stage height to be compared on startup to find the largest number of the two. If it&#8217;s equal to or greater than your <em><strong>minResolution</strong></em> setting, it will select that image for the splash screen. </p>
<p><strong>DynamicSplashScreen.mxml</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:SplashScreenImage xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot; xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;160&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-768x1024.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;240&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-480x810.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;320&quot; aspectRatio=&quot;portrait&quot; source=&quot;@Embed('assets/texas-640x960.jpg')&quot;/&gt;
        &lt;s:SplashScreenImageSource dpi=&quot;160&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-1024x768.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;240&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-810x480.jpg')&quot;/&gt;
	&lt;s:SplashScreenImageSource dpi=&quot;320&quot; aspectRatio=&quot;landscape&quot; source=&quot;@Embed('assets/texas-960x640.jpg')&quot;/&gt;
&gt;/s:SplashScreenImage&gt;
</pre>
<p>Now in your main application root, you simply specify the name of your component defined above in the <em><strong>splashScreenImage</strong></em> property as follows:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;s:ViewNavigatorApplication xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
							xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
							firstView=&quot;views.FrontView&quot;
							splashScreenImage=&quot;DynamicSplashScreen&quot;&gt;
...
&lt;/s:ViewNavigatorApplication&gt;
</pre>
<div align="center"><strong>Portrait Splash</strong></div>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/portraitSplash1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/portraitSplash1-225x300.png" alt="" title="portraitSplash" width="225" height="300" class="aligncenter size-medium wp-image-3741" /></a></p>
<div align="center"><strong>Landscape Splash</strong></div>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/landscapeSplash1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/landscapeSplash1-300x225.png" alt="" title="landscapeSplash" width="300" height="225" class="aligncenter size-medium wp-image-3742" /></a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/&amp;title=Flex%20Mobile%20Development%20%E2%80%93%20Dynamic%20Splash%20Screens" id="wpa2a_8"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/01/20/flex-mobile-development-dynamic-splash-screens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Flex Update!</title>
		<link>http://devgirl.org/2012/01/19/apache-flex-update/</link>
		<comments>http://devgirl.org/2012/01/19/apache-flex-update/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 15:24:39 +0000</pubDate>
		<dc:creator>Holly Schinsky</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://devgirl.org/?p=3645</guid>
		<description><![CDATA[It&#8217;s been quite the roller coaster in the Flex world these past few months to say the least! Now seemed like a good time for an update on the latest status of things. Adobe Flex to Apache Flex Adobe Flex is now Apache Flex (in case you&#8217;ve been under a rock lately or perhaps just [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been quite the roller coaster in the Flex world these past few months to say the least! Now seemed like a good time for an update on the latest status of things. </p>
<p><a href="http://devgirl.org/wp-content/uploads/2012/01/Flexicon1.png"><img src="http://devgirl.org/wp-content/uploads/2012/01/Flexicon1.png" alt="" title="Flexicon" width="256" height="256" class="aligncenter size-full wp-image-3711" /></a></p>
<p></a><a href="http://www.apache.org"><img src="http://devgirl.org/wp-content/uploads/2012/01/asf_logo_wide.gif" alt="" title="Apache Software Foundation" width="537" height="51" class="aligncenter size-full wp-image-3662"/></a></p>
<p><strong>Adobe Flex to Apache Flex</strong><br />
Adobe Flex is now <a href="http://incubator.apache.org/flex/">Apache Flex</a> (in case you&#8217;ve been under a rock lately or perhaps just discovered Flex <img src='http://devgirl.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). It&#8217;s been contributed to the Apache community and is in <a href="http://incubator.apache.org/projects/">incubator status</a>. Incubator status is a holding place for a new Apache project and basically a gateway to it becoming a full-fledged project after a release or two. It was great news that it was accepted recently and I have no doubt it will quickly move out of this stage into a full-fledged project. The project has an amazing amount of traction so far, and it&#8217;s awesome to see all the activity! If you want to stay on top of the latest, <a href="http://incubator.apache.org/flex/mailing-lists.html">subscribe to the mailing list here</a>, (note that your inbox will be flooded so you might want to use a separate email to track it, it&#8217;s a high traffic mailing list <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). There are a bunch of extremely talented, well-known developers behind this project as well, which is huge and makes all the difference, in my opinion. <a href="http://www.spoon.as/">The Open Spoon Foundation</a> is also actively behind this project and if you aren&#8217;t aware of it, definitely make a point of checking it out. I attended the Flex Summit in December and learned a lot about the Apache process from <a href="http://roy.gbiv.com/">Roy Fielding</a> (Apache Co-Founder), with the biggest takeaway being that Apache projects are run as a <a href="http://www.merriam-webster.com/dictionary/meritocracy">meritocracy</a>, so there is equal opportunity amongst all and that contributions of any kind, including code, bug fixes and documentation are <a href="http://incubator.apache.org/flex/get-involved.html">welcome</a>.</p>
<p><strong>The State of Things&#8230;</strong><br />
So the big question everyone has been asking us, should we continue to build apps with Flex? I think the general consensus to be made is yes. There&#8217;s still a viable need for this technology and with the dedication and energy of the community so far I feel very positive about things. As I&#8217;ve stated before and will continue to state, as a developer you shouldn&#8217;t put all of your eggs in any one basket, and should be learning the latest technologies along with continuing your Flex development to ensure your relevance and development diversity, but Flex remains an excellent choice for the right type of application. </p>
<p>Here are some related links you should check out that I found very useful as a meter for what other great developers are thinking and doing:</p>
<p><a href="http://inflagrantedelicto.memoryspiral.com/2012/01/questioning-the-viability-of-flex/">Joseph Labrecque &#8211; Questioning the viability of Flex</a><br />
<a href="https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs">Joao Saleiro &#8211; After 6 years doing Flex, am I moving to HTML5? </a><br />
<a href="http://www.theflexshow.com/blog/index.cfm/2012/1/11/Open-Discussion-w-Joseph-Labrecque-and-Mark-Ehlert-The-Flex-Show-Episode-159">The Flex Show &#8211; Discussing the Future of Flex with Joseph Labrecque and Mark Ehlert</a></p>
<p><strong>Hot Topics&#8230;</strong><br />
One big topic on the mailing list right now centers around a new logo for Apache Flex. The community held a contest (over 50 entries submitted!) and the submissions can be found <a href="http://dl.dropbox.com/u/715349/tmp/flex-logos.html">here</a>. The contest ended yesterday and now the voting process has begun. To vote you will need to start by subscribing to the mailing list. Once subscribed you can cast your votes with a point system defined in the mailing list. There are also some excellent summaries of what&#8217;s going on with the project being posted to this <a href="http://blog.teotigraphix.com/">blog by Michael Schmalle </a> (a current contributor). I would definitely make a point to skim those summaries to get a quick read on the status of things since it can be hard to keep up with the mailing list.  </p>
<p>The following links are also useful to check out for more info:<br />
<a href="http://incubator.apache.org/flex/">The Flex Incubator Project</a><br />
<a href="http://incubator.apache.org/flex/team.html">Contributors</a><br />
<a href="https://issues.apache.org/jira/browse/">JIRA Bug Tracking</a><br />
<a href="http://incubator.apache.org/projects/flex">Flex Incubator Status Page</a><br />
<a href="http://wiki.apache.org/incubator/FlexProposal">The initial proposal from Adobe</a><br />
<a href="http://incubator.apache.org/flex/get-involved.html">Getting Involved</a></p>
<p><strong>This Blog&#8230; </strong><br />
As far as me and my evangelism are concerned, I plan to continue to use Flex and blog about it as I have been. The <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">2012 Flex User Group Tour</a> is about to start and my team will be visiting many locations over the next couple of months where we&#8217;ll discuss all the recent activity and announcements and talk about the latest 4.6 release. You can also plan on seeing some posts on other technologies as I&#8217;m exploring them myself. I will make a point of comparing them to Flex as I go along where possible. I&#8217;m also really looking forward to seeing what Adobe has in store this year to help utilize these other technologies like HTML5, JavaScript/jQuery etc and already excited by what I&#8217;ve heard! I will post information on these topics as I&#8217;m allowed <img src='http://devgirl.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http://devgirl.org/2012/01/19/apache-flex-update/&amp;title=Apache%20Flex%20Update!" id="wpa2a_10"><img src="http://devgirl.org/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://devgirl.org/2012/01/19/apache-flex-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex mobile and music apps</title>
		<link>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/</link>
		<comments>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 13:34:12 +0000</pubDate>
		<dc:creator>RIAgora</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.riagora.com/?p=906</guid>
		<description><![CDATA[Flash (and then Flex) has always been the first choice technology for streaming audio content. I had the chance to work on a very cool mobile application for Radio X-Track. In this article, I&#8217;ll showcase this mobile app and share with you some tips on developping this type of application. As I was developing the [...]]]></description>
			<content:encoded><![CDATA[<p>Flash <em>(and then Flex)</em> has always been the first choice technology for streaming audio content. I had the chance to work on a very cool mobile application for Radio X-Track. In this article, I&#8217;ll showcase this mobile app and share with you some tips on developping this type of application. As I was developing the Radio X-Track mobile apps, <a href="http://www.ckti.com/" >Christophe Keromen</a> presented to me another Flex mobile app developed for Mioozic, which I&#8217;ll also cover in this article. Lastly, I&#8217;ll end by presenting a very cool Flex mobile app named &#8220;What&#8217;s that track?&#8221;, a multiplayer music quiz game.</p>
<h2>Radio X-Track</h2>
<h3>UI considerations</h3>
<p>Radio X-Track is a great project led by true music lovers. DJs, painters, actresses and sound designers work together to publish creative playlists of music, covering various styles and  stimulating your eyes with massive paintings. The web radio is also a place for networking with music lovers. Once logged-in with your Facebook account, you can start chatting directly on the website. This arty space is directed by X-Track, a famous sound design studio in France. You can visit the web radio here: <a href="http://radio.x-track.net/EN/">http://radio.x-track.net/EN/</a></p>
<p>The development of the mobile application was challenging as the web radio is a Flash application connected to FMS. Thanks to the recent updates of Adobe AIR, I&#8217;ve been able to use Flex to stream the playlists on smartphones and tablets. First, I&#8217;ve decided to use <a href="http://www.riagora.com/2011/06/adaptive-ui-mobile-vs-tablet/" >my adaptive layout technique</a> to code one UI and target both mobile and tablet screens. Here is a video that explains the trick. I&#8217;m playing with two view navigators that dynamically adapt their dimensions and their coordinates at runtime, depending on the screen resolution and the screen orientation.</p>
<p><iframe title="AdobeTV Video Player" src="http://tv.adobe.com/embed/64/11658/" frameborder="0" scrolling="no" width="480" height="296"></iframe></p>
<p>That&#8217;s why on Android, you have a very simple user experience. The first view is the list of DJs, the second view displays a scrollable picture, streams the playlist and displays the title of the song.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/androidRadioXtrack.jpg"><img class="alignnone size-full wp-image-910" title="androidRadioXtrack" src="http://www.riagora.com/wp-content/uploads/2012/01/androidRadioXtrack.jpg" alt="" width="570" height="259" /></a></p>
<p><em><strong>Here is the link to the Android application:</strong></em></p>
<p><a href="https://market.android.com/details?id=air.com.riagora.Xtrack" >https://market.android.com/details?id=air.com.riagora.Xtrack</a></p>
<p>With Flex, you code one project and then can publish it on both Android and iOS. So I submitted this application to Apple.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/iphoneRadioXtrac.jpg"><img class="alignleft size-full wp-image-911" title="iphoneRadioXtrack" src="http://www.riagora.com/wp-content/uploads/2012/01/iphoneRadioXtrac.jpg" alt="" width="257" height="300" /></a>The App Store reviewers rejected the initial application for UI reasons. They told me that displaying a list and then a view could be done in the browser, and that it doesn&#8217;t justify the development of an application. They wanted me to develop the application using HTML5&#8230; well&#8230; live audio&#8230; html5&#8230; I had to consider a new strategy and worked on a totally different UI. I started studying the UI patterns of approved radio application and ended up with a new user experience. I&#8217;ve also added some features such as a twitter feed and the biographies of the artists. The application has been directly approved by Apple and is now available for iPhone and iPad users.</p>
<p><em><strong>Here is the link to the iOS application:</strong></em></p>
<p><a href="http://itunes.apple.com/fr/app/radio-x-track/id467964868?mt=8" >http://itunes.apple.com/fr/app/radio-x-track/id467964868?mt=8</a></p>
<p>&nbsp;</p>
<h3>Some technical tips to manage audio content</h3>
<p>As the music is streamed by FMS, you can use the classic NetConnection and NetStream object of the Flash API. When the user wants to hear another playlist, I kill the current NetStream object and create a new one<em> (I keep in memory the NetConnection instance)</em>. FMS fires a RTMP message every time a new song is streamed. The client catches the message and displays the title of the song on the screen. The main challenge was to mimic the behavior of the iPod. If you shutdown the screen of your iPhone, or if you switch to another application, the radio is still supposed to stream audio. AIR 3 introduced a new feature to enable this behavior. At the end of the application descriptor of your Flex mobile application, you have a dedicated section for iPhone settings. You can set iOS keys such as <strong>UIApplicationExistsOnSuspend</strong>. All the iOS settings for Adobe AIR are <a href="http://help.adobe.com/en_US/air/build/WSfffb011ac560372f7e64a7f12cd2dd1867-8000.html" >listed on this page</a>. In this case, I&#8217;m setting the UIBackgroundModes key to audio.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="http://www.riagora.com/2012/01/flex-mobile-and-music-apps/#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="http://www.riagora.com/2012/01/flex-mobile-and-music-apps/#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="http://www.riagora.com/2012/01/flex-mobile-and-music-apps/#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://www.riagora.com/wp-content/plugins/wp-synhighlight/About.html"  title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.riagora.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;iPhone<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;InfoAdditions<span class="re2">&gt;</span></span></span><span class="sc2">&lt;![CDATA[</span>
<span class="sc2">			&lt;key&gt;UIDeviceFamily&lt;/key&gt;</span>
<span class="sc2">			&lt;array&gt;</span>
<span class="sc2">				&lt;string&gt;1&lt;/string&gt;</span>
&nbsp;
<span class="sc2">			&lt;/array&gt;</span>
<span class="sc2">			&lt;key&gt;UIBackgroundModes&lt;/key&gt;</span>
<span class="sc2">			&lt;array&gt;</span>
<span class="sc2">				&lt;string&gt;audio&lt;/string&gt;</span>
<span class="sc2">			&lt;/array&gt;</span>
<span class="sc2">		]]&gt;</span><span class="sc3"><span class="re1">&lt;/InfoAdditions<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;requestedDisplayResolution<span class="re2">&gt;</span></span></span>high<span class="sc3"><span class="re1">&lt;/requestedDisplayResolution<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/iPhone<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Unfortunately, it won&#8217;t display the &#8220;play&#8221; icon in the status bar of iOS. I guess it would require the development of a native extension. Radio X-Track is a free application. Enjoy !</p>
<h2>Mioozic</h2>
<p>Mioozic is also a Flex mobile application available on both Android and iOS. You start by choosing a theme or a category, and it will start streaming music on your device. This Flex application has been developed by Christophe Keromen, the author of <a href="http://www.amazon.fr/Flex-4-5-pour-mobiles-multiplateformes/dp/2100567063/ref=ntt_at_ep_dpt_1" >&#8220;Flex 4.5 for mobile devices&#8221;</a> (in French). It&#8217;s a great example of a high-performance Flex application running on smartphones.</p>
<p style="text-align: center;"><a href="http://www.riagora.com/wp-content/uploads/2012/01/mioozic.jpg"><img class="size-full wp-image-913 aligncenter" title="mioozic" src="http://www.riagora.com/wp-content/uploads/2012/01/mioozic.jpg" alt="" width="530" height="300" /></a></p>
<p>Mioozic on Android : <a href="https://market.android.com/details?id=air.netrix.air.mioozic" >https://market.android.com/details?id=air.netrix.air.mioozic</a></p>
<p>Mioozix on the app store: <a href="http://itunes.apple.com/fr/app/mioozic/id479503574?mt=8" >http://itunes.apple.com/fr/app/mioozic/id479503574?mt=8</a></p>
<h2>What&#8217;s that track</h2>
<p>This game developed by Orange Labs and Deezer is also a very cool Flex mobile application. It&#8217;s a quiz game. You can play alone or with friends. The goal is very basic: hear a song, tap the screen if you think that you know the artist, and select the correct artist in a list of four. It&#8217;s a very cool game with a nice 70s UI. It&#8217;s already a popular app on Android (only). Have fun.</p>
<p><a href="http://www.riagora.com/wp-content/uploads/2012/01/android-mioozic.jpg"><img class="alignnone size-full wp-image-915" title="android-mioozic" src="http://www.riagora.com/wp-content/uploads/2012/01/android-mioozic.jpg" alt="" width="530" height="300" /></a></p>
<p>What&#8217;s that track on Android: <a href="https://market.android.com/details?id=air.com.orange.labs.whatsthattrack&amp;hl=fr" >https://market.android.com/details?id=air.com.orange.labs.whatsthattrack&amp;hl=fr</a></p>
<p>&nbsp;</p>
<div class="tweetthis" style="text-align:left;"><p> <a  rel="nofollow" class="tt" href="http://twitter.com/share?url=http://www.riagora.com/2012/01/flex-mobile-and-music-apps/&text=Flex+mobile+and+music+apps&via=mchaize&related=richardxthripp,tweetthisplugin" title="Post to Twitter"><img class="nothumb" src="http://www.riagora.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-micro3.png" alt="Post to Twitter" /></a></p></div><div id="google_plus_one"><g:plusone></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.riagora.com/2012/01/flex-mobile-and-music-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012 Flex User Group Tour: North America Dates Announced</title>
		<link>http://www.tricedesigns.com/2012/01/18/2012-flex-user-group-tour-north-america-dates-announced/</link>
		<comments>http://www.tricedesigns.com/2012/01/18/2012-flex-user-group-tour-north-america-dates-announced/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 19:56:23 +0000</pubDate>
		<dc:creator>Andrew Trice</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.tricedesigns.com/?p=1394</guid>
		<description><![CDATA[If you hadn&#8217;t heard already, Flex has been accepted by the Apache Software Foundation. If you are wondering what exactly this means, or you have asked yourself any of the following questions, then you might want to check out the Adobe Flex User Group Tour: Do you want to learn more about the future of [...]]]></description>
			<content:encoded><![CDATA[<img class="alignleft size-full wp-image-1396" title="flex" src="http://www.tricedesigns.com/wp-content/uploads/2012/01/flex.png" alt="" width="100" height="100" />If you hadn’t heard already, <a href="http://www.tricedesigns.com/2012/01/03/flex-accepted-by-apache-software-foundation/">Flex has been accepted by the Apache Software Foundation</a>. If you are wondering what exactly this means, or you have asked yourself any of the following questions, then you might want to check out the <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">Adobe Flex User Group Tour</a>:
<ul>
	<li>Do you want to learn more about the future of Flex?</li>
	<li>Do you want to learn more about the Flex transition to the Apache Software Foundation?</li>
	<li>How can you contribute and help make Flex thrive?</li>
	<li>Do you have questions that you would like to voice to Adobe?</li>
</ul>
As promised, Adobe is kicking off The Flex User Group Tour to discuss recent events surrounding Flex and the Flash Platform.   These meetings are intended to help you understand the changes happening with Flex and Flash, the impact to related tools, as well as to educate about the process &amp; transition to Apache.   You can learn more about the user group tour and get an up-to-date listing of dates &amp; cities from the <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">Flex Team blog</a> - be sure to check back periodically for updates. Initial cities include New York, Boston, Denver, Seattle, Los Angeles, Sand Diego, and Dallas.   Expect more cities &amp; countries to be announced at a later date.
<div>We hope to see you at one of the upcoming events. I’m scheduled to speak at the <a href="http://dflex.groups.adobe.com/">Dallas</a> event in April, and I hop to see you there!</div>]]></content:encoded>
			<wfw:commentRss>http://www.tricedesigns.com/2012/01/18/2012-flex-user-group-tour-north-america-dates-announced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cool Stuff with the Flash Platform &#8211; 1/17/2012</title>
		<link>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-17-2012</link>
		<comments>http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-17-2012#comments</comments>
		<pubDate>Wed, 18 Jan 2012 03:55:38 +0000</pubDate>
		<dc:creator>Remote Synthesis</dc:creator>
				<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://www.remotesynthesis.com/post.cfm/cool-stuff-with-the-flash-platform-1-17-2012</guid>
		<description><![CDATA[Some really interesting posts this week including a lot of Stage3D including a free Starling book, new Stage3D powered site for the Grammys, new Stage3D games and more. Also, several posts covering mobile performance and a new in-app purchase native ex...]]></description>
			<content:encoded><![CDATA[Some really interesting posts this week including a lot of Stage3D including a free Starling book, new Stage3D powered site for the Grammys, new Stage3D games and more. Also, several posts covering mobile performance and a new in-app purchase native extension for iOS.

<strong>Cool Stage3D Stuff</strong>

Adobe's Thibault Imbert announces the release of a new and totally free <a href="http://www.bytearray.org/?p=3860">Starling book from O'Reilly</a> and available as a PDF. If you are interested in building 2D games using Stage3D for GPU acceleration, you should check it out.

Adobe's Jens Loeffler posts that the new and impressive looking <a href="http://www.flashstreamworks.com/2012/01/16/the-54th-grammys-rock-with-stage3d/">54th Grammy's site is powered by Flash and Stage3D</a>. All the effects are generated in real-time and are interactive.

Flash Daily posts a link to a new game being developed using Flash, Stage3D and Minka. The
<a href="http://flashdaily.net/post/16006569490/blacksun-game-technical-preview">Black Sun game</a> released a playable technical preview that shows off some of the excellent graphic capabilities of Flash Player 11 and Stage3D.

Adobe evangelist Lee Brimelow shares a new video tutorial on <a href="http://www.gotoandlearn.com/play.php?id=156">how to use the Flare3D library to create an animated 3D character</a> scene using Stage3D.

Speaking of Flare3D Michael Ivanov wrote a <a href="http://blog.alladvanced.net/2012/01/07/flare3d-flsl-online-editor/">Flare3D FLSL online editor</a> that allows you to write shaders,compile them in real time and save locally or to the database.

Jozef Chutka created a new Github project called <a href="https://github.com/jozefchutka/YCanvas">YCanvas</a> for Stage3D that enabled overlapping grid-based zooming for projects like world maps.

Nicolas Barradeau shares some samples with source and videos on <a href="http://en.nicoptere.net/?p=2047">geometry, dynamic mesh generation and manipulation</a> using Away3D and Stage3D for Flash Player 11.

<strong>Cool ActionScript/Flash Stuff</strong>

Klas shares some experiments generating massive amounts of <a href="http://oos.moxiecode.com/blog/2012/01/pixel-particles/">pixel particles</a> to create 3D images that, according to the post, support Flash Player 10 (i.e. not Stage3D).

Barbara Kaskosz shows how you can <a href="http://www.flashandmath.com/howtos/bddraw/">draw DisplayObjects as Bitmaps</a>, for example when trying to optimize for mobile, and shares the source of an example project.

Jackson Dunston follows up on his <a href="http://jacksondunstan.com/articles/1696">serialize anything</a> post by covering the same topic but this time comparing JSON serialization.

Emanuele Feronato continues his series on <a href="http://www.emanueleferonato.com/2012/01/17/create-real-explosions-with-box2d-adding-textures/">creating real explosions with Box2D</a> by adding textures to the objects that are exploded.

<strong>Cool Mobile &amp; Devices Stuff (Android, iOS, Blackberry, Television)</strong>

Shawn at esDot follows up an earlier post about fast rendering in AIR by showing how to use <a href="http://esdot.ca/site/2012/fast-rendering-in-air-cached-spritesheets">cached SpriteSheets</a> to get huge performance boosts out of your MovieClip animations. Shawn also shows how to use <a href="http://esdot.ca/site/2012/using-stage-quality-low-to-boost-your-performance">Stage.quality = LOW to boost your performance</a> without compromising image quality at all.

Adobe's Jens Loeffler created the "<a href="http://www.flashstreamworks.com/2012/01/09/the-ultimate-guide-to-understanding-advanced-video-delivery-with-air-for-mobile/">Ultimate Guide to Understanding Advanced Video Delivery with AIR for Mobile</a>." Jens also shares the source code for achieving <a href="http://www.flashstreamworks.com/2012/01/14/720p-video-on-ipad-and-android-tablets-with-adobe-air/">720p video on iOS and Android tablets with Adobe AIR</a>.

Bill Sanders says his mobile AIR applications were faster and more responsive by <a href="http://www.as3dp.com/2012/01/actionscript-3-0-touchevent-guaranteed-mobile-speedup/">using the TouchEvent rather than ClickEvent</a> despite noting a suggestion for quite the opposite from the Adobe documentation. Bill also discusses having a <a href="http://www.as3dp.com/2012/01/actionscript-3-0-single-class-event-handler/">single class for handling all events</a>.

Daniel Freeman shows how to <a href="http://madskool.wordpress.com/2012/01/12/extending-madcomponents/">extend the MadComponents library</a> of mobile components.

<em>Android</em>

Adobe evangelist Piotr Walczyszyn shares a video showing how to use his <a href="http://www.riaspace.com/2012/01/as3c2dm-getting-started/">as3c2dm native extension for the Android Cloud to Device Messaging Framework</a>.

<em>iOS</em>

Alex Liebert announces the availability of his <a href="http://www.milkmangames.com/blog/2012/01/09/ios-in-app-purchase-extension-for-adobe-air/">iOS In-App Purchase native extension for Adobe AIR</a>.

<strong>Cool Flex, Flash Builder &amp; Catalyst Stuff</strong>

Adobe's Alan Greenblatt discusses all the available <a href="http://blattchat.com/2012/01/05/flex-mapping-options/">Flex mapping options</a>.

Deepa Subramaniam <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html">announces the cities and dates of the Flex User Group 2012 Tour for North America</a>.

If you cannot keep up with the volume on the Apache Flex mailing list, I highly recommend following <a href="http://blog.teotigraphix.com/category/apacheflex/">Michael Schmalle's mailing list summaries</a> in which he boils down all the day's discussion into an easy to read blog post summary.]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/01/17/cool-stuff-with-the-flash-platform-1172012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>João Saleiro &#8211; After 6 years doing Flex, am I moving to HTML5?</title>
		<link>http://flex.org/2012/01/16/joao-saleiro-after-6-years-doing-flex-am-i-moving-to-html5/</link>
		<comments>http://flex.org/2012/01/16/joao-saleiro-after-6-years-doing-flex-am-i-moving-to-html5/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 20:38:00 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Flex News]]></category>
		<category><![CDATA[Flex on Mobile Devices]]></category>
		<category><![CDATA[Syndicated]]></category>

		<guid isPermaLink="false">http://flex.org/?p=2711</guid>
		<description><![CDATA[Short answer: no. But I&#8217;m investing in HTML5. (really) Long answer: see below. After returning from the Flex Summit, many people have contacted me asking what was going to happen with Flex and if I was going to &#8220;migrate&#8221; our projects (like http://airgile.com ) and services to HTML5. After plenty of exchanged emails and dozens of long [...]]]></description>
			<content:encoded><![CDATA[<p>Short answer: no. But I&#8217;m investing in HTML5.<br />
(really) Long answer: see below.</p>
<p>After returning from the Flex Summit, many people have contacted me asking what was going to happen with Flex and if I was going to &#8220;migrate&#8221; our projects (like <a href="http://airgile.com/">http://airgile.com</a> ) and services to HTML5. After plenty of exchanged emails and dozens of long talks, I decided to write down and share some notes of my first steps in the HTML5 world regarding the development of Enterprise RIAs (or not). These notes are not organized, they have typos and &#8211; as I said above &#8211; they are only my first steps so more experienced people might (and will) prove me wrong in some topics.</p>
<p><strong>Background</strong></p>
<p>I founded Webfuel in 2004 and since then we&#8217;ve specialized in building long-term (&gt; 6 months) enterprise-grade RIAs that had to scale well and be prepared for constantly changing requirements with a low cost in maintainability, while simultaneously providing a top-notch user experience. We&#8217;ve managed to offer our services comfortably with a very limited number of resources and small development teams (3-5 persons per project), much thanks to the way we leveraged existing knowledge on Software Engineering and applied it to our platform of choice &#8211; Adobe Flex (now fortunately called Apache Flex).<br />
Our decision was purely technical and we have never regretted our choice, until it got badly affected by the bad PR around the Flash platform.</p>
<p><strong>Worse PR ever in November 2011</strong></p>
<p>The Flash platform was already in bad shape, much thanks to one year of chaotic PR and there were already some inconsistent signs from Adobe hinting what was going to happen. While disappointed, I was not very surprised when all hell broke loose in November 2011 with Adobe destroying the very last credibility that Flash still had, directly affecting Flex, our businesses and careers. Long story short, Adobe wasn&#8217;t able to monetize the Flash Platform and the top managers who don&#8217;t really care or understand its power simply decided to put the money where their mouth was: HTML5. I happen to strongly agree with the move on investing in HTML5, but they could and should have done it without destroying (the perception of) Flash. Especially because in the meantime it had turned into the platform of choice for Enterprise Development.</p>
<p>In December &#8217;11 Adobe has donated Flex to Apache. While this might end up in being the best thing that could happen to Flex, the initial reaction from the Enterprise was that Adobe was getting rid of Flex. Like someone said during the Flex Summit &#8211; &#8220;it seems to me that Adobe has built the best platform for creating enterprise-grade applications by accident&#8221;. Adobe understands design; creativity; marketing; publishing; Adobe doesn&#8217;t seem to understand Enterprise. Example #1: all corporate companies I worked with in the last 6 years complained about ZERO support from Adobe and they were willing to pay big money. Example #2: the pricing of LCDS.</p>
<p>Did Adobe kill Flex? No! A technology doesn&#8217;t have a heart attack and drops dead on the floor. Flex is still alive and the reasons why we chose it are still <strong>perfectly valid</strong>. Flex didn&#8217;t get worse suddenly &#8211; it&#8217;s still the same robust platform for enterprise RIA development.<br />
What was destroyed was the perception of the Flash Platform. And the perception is what matters on business. You can have the best product of the world, but if people believe it&#8217;s bad they won&#8217;t buy it (and they&#8217;ll even be happy on telling everyone how much your product &#8211; that they never used &#8211; sucks). But if they think it&#8217;s good &#8211; even if it actually sucks &#8211; they&#8217;ll probably buy it (and complain later). Perception. That&#8217;s what sells. Perception.</p>
<p>Will the perception around Apache Flex ( <a href="http://incubator.apache.org/flex/">http://incubator.apache.org/flex/</a> ) improve? Most likely, yes. In 9 days, there were more than 1.4 thousand emails exchanged on the Flex Mailing List ( <a href="http://incubator.apache.org/flex/mailing-lists.html">http://incubator.apache.org/flex/mailing-lists.html</a> ) ! It&#8217;s pretty impressive the number of people that are now involved in pushing Flex forward and this number will most likely keep rising. But Apache Flex still relies (or, at least for now) on the Flash Platform and I&#8217;m not seeing the bad perception on the Flash Player changing in a near future. Of course there&#8217;s still AIR, but what concerns me are browser applications.</p>
<p><strong>We are desktop-developers-working-on-the-web</strong></p>
<p>An important side note, is that I see Webfuel as a team of desktop developers working on the web. In other words, we use desktop development paradigms, best-practices and design patterns borrowed from the JAVA world and we&#8217;ve applied them to build applications that happen to run inside the browser. Our work consists normally in building at least two loosely coupled applications, connected by an RPC API: a client application (running inside the web-browser) and a server application that only exposes services and is not aware of the client application.</p>
<p>Most Flex developers out there think on themselves as web-developers, but in most cases the mindset of a Flex developer is closer to a desktop developer than to a web developer. IMHO, this is the single-most-important reason on why we, Flex developers, dislike so much the &#8220;normal&#8221; web development approaches.<br />
We work with &#8220;views&#8221;, web developers work with &#8220;documents&#8221;. We do old-school MVC, DI, loosely coupled approaches, dependency management, RPC, code coverage, continuous integration [...], and when we&#8217;re forced to do web-development these are the first concepts that we try to investigate and replicate&#8230; before we get frustrated and enter in &#8220;denial&#8221;.<br />
To be good at typical web-development, we have to <strong>change our mindset</strong>.</p>
<p><strong>Is &#8220;HTML5&#8243; ready?</strong></p>
<p>According to Twitter, online magazines, blogs, Apple, Microsoft and even Adobe, HTML5 is the silver-bullet for everything. It can be used to build websites, webapps, games, software, mobile applications, doing laundry and cooking. The focus is all on HTML5 right now. Is it the right moment to use it?</p>
<p>From the point of view of a web-developer &#8211; of course it is!!! For a typical web-developer, HTML5 means more tools, more power and much better cross-browser compatibility than what they had before. If you&#8217;re working on the web, HTML5 and the storm of JS frameworks is simply the best thing that has happened to the web since&#8230;. humm&#8230; Flash. <img src='http://flex.org/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> ) Bottom line, HTML5 is for sure a giant step forward.</p>
<p>From the point of view of a desktop-developer-working-on-the-web &#8211; hell no! WTF? We work on the enterprise and enterprise means stability. We can&#8217;t afford to have too many moving pieces all the time. We can&#8217;t afford to deal with un-structured languages. If you&#8217;ve used Flash or Flex for the last 5 years, you&#8217;ll feel that in HTML5 there&#8217;s nothing new or better than what you already have. Worse, you&#8217;ll feel that there still are hundreds of needed capabilities and tools missing. Exception to the rule, happens if you&#8217;re targeting the browser of Mobile devices, where HTML5 is king.<br />
It&#8217;s quite understandable that a Flex developer feels frustrated. You feel you&#8217;re going backwards 4 or 5 years. It happens that, as Ted Patrick stated ( <a href="http://tedpatrick.com/2011/11/12/living-in-the-future/">http://tedpatrick.com/2011/11/12/living-in-the-future/</a> ) , we were living in the future&#8230;</p>
<p><strong>Ignore the PR shit storm. Ignore fanboys. Choose the right tools. Ask the right questions to the right developers</strong></p>
<p>People like to take sides. If I like and use something, for sure it&#8217;s because it&#8217;s the best thing ever and all the rest sucks or is dead. That&#8217;s how it works for most fanboys.<br />
Newsflash: if 10.000 persons say that something sucks, it doesn&#8217;t really mean that it really sucks. It means that they believe it sucks. It&#8217;s like believing in a religion &#8211; each follower defends his religion, but which one is the &#8220;right&#8221; religion (or, is there a &#8220;right&#8221; religion)? The irony is that developers should be pragmatic people but we often see them becoming fanatic about their technology choices. &#8220;Infidel, infidel&#8221;, they yell with their pitchforks in the air when you say the name of a &#8220;competitor&#8221; technology. WTF?</p>
<p>For me, technologies are just tools. Obviously I would like to have as many good tools as possible so I can be able to choose the right one for each task. Be it Flex, HTML5, Javascript, Actionscript, JAVA, PHP, whatever.</p>
<p>Bottom line: ignore the PR shit storm. Ignore fanboys. Choose your tools based on logic. You wouldn&#8217;t choose a hammer to cut wood, would you?</p>
<p>Last year, when I started digging seriously into Javascript, I had many questions. I took for granted that someone who defends a technology with so much conviction, probably understands it pretty well. So I placed several questions to these guys expecting to learn new stuff and understand their best practices. It happens that I haven&#8217;t learnt shit. It was like if me and they were from different planets, speaking different languages. Even similar words have different meanings (their MVC is not our MVC. their dependency management is not our dependency management&#8230; etc).</p>
<p>I&#8217;ve sent a couple of emails to mailing lists of HTML5 and JS development asking people what they were using for MVC, IoC, Unit Testing, Code Coverage, Compiling, Continuous Integration, etc, etc. The answers were like &#8220;WTF dude, IoC? What are you talking about?&#8221;. I now know that I was doing the wrong questions, as you&#8217;ll see below.</p>
<p>Since I couldn&#8217;t get (or understand) answers from the gurus of the JS world, I started trying to find people who were doing both large-scale Actionscript and Javascript. They would understand me. <img src='http://flex.org/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> ) It happens that there aren&#8217;t many and most of them were more or less at the same point I was. The best single advice I got was: &#8220;accept web dev for what it is and don&#8217;t try to change it. Don&#8217;t do RIAs. Do simple web development. Then improve.&#8221;. Good advice!.</p>
<p><strong>Redefining our focus</strong></p>
<p>As I said above, technology-wise, Flex is still perfectly valid. But it&#8217;s perception is at its lowest level and clients are quite confused and started asking us to use HTML5 to build the same type of solutions we were building with Flex.</p>
<p>So we had to rethink our business, and considering our desktop-developers-working-on-the-web mindset, we&#8217;ve decided to:</p>
<p>1- return to our roots: desktop development. That&#8217;s what we&#8217;re good at and we can still keep using Flex to build AIR applications, either for the desktop or mobile. Since we can embed the AIR runtime, those applications will be future-proof to any other crazy-game-changing decisions made by Adobe.<br />
2- increase our investment in developing (simple) HTML(5) webapps, while accepting the web for what it is: broken. In other words, we have to be humble about what we can provide on the web. It&#8217;s too hard and expensive to build the same type of applications we were building, so we&#8217;re starting with just simple webapps.</p>
<p>We won&#8217;t be accepting huge enterprise-grade projects if they&#8217;re meant to be built in HTML(5). This is actually the hardest problem to manage. There are expectations from clients. They&#8217;ve gotten used to our beautiful RIA applications, with almost no waiting times, with beautiful and pixel-perfect interactive user interfaces. And now they want the same, but in HTML5, because Flash is &#8220;dead&#8221; and HTML5 will also run on their Mobile devices (all of them), faster and without consuming battery. At least, it&#8217;s what they heard&#8230;. The solution for this problem is to say &#8220;No, we are not ready to develop it in HTML5&#8243;. We&#8217;ll be restricting our development to simpler web-apps, until we feel that we (and the web) are ready.</p>
<p><strong>First steps in JS and HTML5</strong></p>
<p>During 2011, I&#8217;ve read <strong>A LOT</strong> about JS frameworks, libraries, approaches, etc. Sometimes after finishing reading something, it was already outdated and a better library was available.</p>
<p>My first impression was that most docs were &#8220;meh&#8221;: in most cases you have an excellent &#8220;Getting Started&#8221; guide, but as soon you start getting your hands dirty in more complicated scenarios, things start falling apart and you&#8217;ll see none or outdated advanced documentation.</p>
<p>Another trend that I hated in my readings was the lack of objectivity: instead of the typical website and docs saying &#8220;this framework does A,B,C,D&#8221; , I saw a lot of &#8220;THIS IS THA MOTHA-FUCKA FRAMEWORK THAT WILL SAVE UR LIFE!&#8221;, &#8220;MEGA-HYPA-SHIZZLA-FRAMEWORK&#8221;. This type of communication felt weird and suspicious to me until I got used to it.</p>
<p>I&#8217;ve also seen several frameworks being dropped in favor of others, which was actually what scared me the most. I felt insecure choosing the &#8220;right&#8221; libs and frameworks, so most choices I did at start were the safe ones, as you&#8217;ll see below.</p>
<p>Another irony was that most of the JS frameworks exist to overcome the limitations of the web development (normally, the crossbrowser issues). Coming from an environment where a framework tries to abstract application concepts, it felt weird to me to use frameworks to abstract technical limitations. Today, I&#8217;ve learnt to enjoy and welcome these frameworks. Accept them for what they are, because the technical limitations actually <strong>exist</strong> and without those frameworks you&#8217;re screwed.</p>
<p>In October 2011, I decided to start a medium sized real-life HTML5 webapp with a partner company, so we could test the knowledge I gathered. (A medium-sized project in the point of view of a web-developer; as a desktop-developer I see it as simple stuff<a href="https://plus.google.com/s/%23notBeingHumble">#notBeingHumble</a> ). I&#8217;ve allocated two developers to the project &#8211; with myself being one of them. Below are the choices we made.</p>
<p><strong>Knockout.js</strong></p>
<p>Despite having read about Backbone, Spine and other more complex frameworks, I&#8217;ve decided to start small and simple with Knockout.JS . I just wanted simple data-binding to start with, so I could get some separation between the data model and the view. Later, when we were more experienced, I would re-evaluate the choice of the framework and choose between Backbone, Spine, or another.</p>
<p>My choice has proven to be worthy since Knockout is actually quite simple &#8211; but far more complicated and intrusive than the ultra-easy and powerful binding we&#8217;re used to in Flex.</p>
<p>The documentation of Knockout is quite good, with plenty of tutorials available. On Google you won&#8217;t find as many resources on Knockout as you would like, but fortunately the website covers most of the important topics. The mailing list is pretty good, despite not being as active as the MLs I&#8217;m used to in the Flex world with dozens or hundreds of experts. Anyway, in the Knockout ML, there were always one or two people kind enough to point you in the right direction, which is great.</p>
<p><strong>jQuery</strong></p>
<p>I had already a good impression on jQuery, but even still it turned up to be even better than what I expected. jQuery not only hides a lot of the crossbrowser issues &#8211; not all -, but also boosts up a lot your productivity with dozens of shortcut functions to most of the stuff people normally need to do on the web. Use it (can you live without it?).</p>
<p><strong>SaaS</strong></p>
<p>Managing CSS can easily turn into a pain especially if you need to do many changes to an existing stylesheet with hundreds of CSS declarations. When Googling for best practices, I met SaaS. SaaS is actually pretty simple: it lets you define CSS stylesheets with declaration hierarchy, variables and mathematic expressions, saving them on a scss file. Then you start a command line task that listens for changes in your scss file and converts it to a CSS file on the fly.</p>
<p>I haven&#8217;t looked at Less, so I don&#8217;t really know which one is better.</p>
<p><strong>Lab.JS</strong></p>
<p>I also discovered (the hard way) the pain that it can be to manage dependencies in Javascript. I was used to having all class definitions packaged for me in a single SWF and the Flash VM would take care of embedding and managing dependencies for me (pretty most like all bytecode VMs do). In the Javascript world, there&#8217;s nothing taking care of this for you. You start by setting in the HTML file the location of the scripts needed, but then you cannot control the order they are loaded and run. So you can be calling a function myFunction() in fileB.js that was defined in fileA.js that was not loaded yet &#8211; resulting in errors.</p>
<p>I&#8217;ve chosen Lab.JS to solve the issue of loading dependencies on the right order. I&#8217;m also making sure that any initialization code only runs AFTER all the needed files are loaded.</p>
<p>I&#8217;ve found a problem with Lab.JS: if your code throws exceptions, they will be swallowed by the library and nothing happens. My workaround (read: ugly hack) was to do a &#8221; setTimeout(initialize, 1); &#8221; after the scripts are loaded. This way exceptions are now caught by the browser, as you would expect.</p>
<p><strong>IDEs</strong></p>
<p>This was one of the biggest disappointments in the beginning. The biggest problem of JS is that due to its dynamic nature it&#8217;s hard to be tooled around. For building large scale complex systems, especially in a team environment, I needed good refactoring capabilities. It happens that refactoring doesn&#8217;t exist in the IDEs I tried.<br />
Ok, there is something called &#8220;rename&#8221; in WebStorm but it works for very simple cases and I&#8217;ve seen it resulting in unexpected results (so I always use the &#8220;preview&#8221;).</p>
<p>Flash Builder is a complete beast (in a good sense). I&#8217;ve seen many people ranting on Flash Builder and even I had some disappointments a couple of years ago. But after FB 4 it just got awesome, with its serious refactoring capabilities, find usages, metadata completion, autocomplete, inline docs, content assist, etc. Most of the best tricks from the JAVA world are available on FB. If you expect to find those in JS editors, I have bad news for you.</p>
<p>I&#8217;ve started with Aptana. It&#8217;s free. It&#8217;s based on Eclipse, so I felt at home at least with the shortcuts and the structure of the IDE, but with a black editor (wtf? is this the &#8220;fashion-color&#8221; for supa-dupa-web-developers?). Anyway, after two months I got tired of it. I couldn&#8217;t do refactoring. I couldn&#8217;t jump properly to a function definition with CTRL+click (and this was REALLY annoying). It didn&#8217;t have decent auto-complete. I&#8217;ve tried making the debugging work but it only worked properly 15% of the time.</p>
<p>Then I&#8217;ve decided to give PHPStorm a try &#8211; which is the same as WebStorm, but also supports PHP. At first, I was lost: I couldn&#8217;t find half of the stuff I needed. After one day, I was pretty comfortable with it and now I feel it&#8217;s actually pretty well built. Ok, it&#8217;s NOT Eclipse, but even still it&#8217;s quite powerful. What those guys did was to implement <strong>really well</strong> the things you use most while developing and packaged all of them in a clean and objective interface. Kudos to JetBrains ( <a href="http://www.jetbrains.com/">http://www.jetbrains.com/</a> )!<br />
In PHPStorm, refactoring &#8220;sorta&#8221; works in simple scenarios. If you complicate too much (like when you try to mimic packaging for your objects), it won&#8217;t work. Click and jump to a function definition works. Debugging&#8230; works!! Autocomplete works a lot better than I expected. Actually, it works quite well. The catch: comparing to Aptana, it&#8217;s not free.<br />
Coming from Flash Builder, will you be happy with PHPStorm? No. But currently it seems to me that it is probably the best IDE for Web development.</p>
<p><strong>Debugging</strong></p>
<p>I feel ashamed to say that I couldn&#8217;t debug properly during the first two to three weeks. Every tool I tried didn&#8217;t work as expected. It happens I was using the wrong tools, browsers and approaches.<br />
I ended up using the debugging capabilities of both Firebug (in Firefox!) and PHPStorm. Firebug is also pretty helpful to inspect the DOM of the document, something you&#8217;ll be doing every 5 minutes. Both Firebug and PHPStorm allow you to place a breakpoint in JS code and then run your code step by step, as expected. PHPStorm looks more comfortable to me, also because it&#8217;s where I&#8217;m writing my code.<br />
Bottom line: If your debugging is not working, don&#8217;t blame JS: you&#8217;re simply using the wrong tools.</p>
<p><strong>Javascript</strong></p>
<p>This was probably my biggest pain point. I&#8217;ll start with the conclusions: accept Javascript for what it is and don&#8217;t try to mimic your common OOP techniques and classes. There.are.no.real.classes.in.javascript.<br />
Of course, you can <strong>try</strong> to mimic them &#8211; I&#8217;ve read half of a book teaching how to do that. But I&#8217;ve come to the conclusion that the complexity that you&#8217;re adding to get you closer to your comfort zone ends up not being comfortable at all&#8230;<br />
You have objects in Javascript. Some might argue that they&#8217;re not &#8220;real objects&#8221;, but wtf, they are what they are and bitching around all the time won&#8217;t turn them into real objects. They are objects. It&#8217;s the definition of &#8220;real&#8221; that is subjective <img src='http://flex.org/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> )</p>
<p>The problems with JS:</p>
<p>- Silent errors. They happen. Get ready for them.<br />
- Hard coupling everywhere. It&#8217;s pretty hard to do loosely coupled architectures. It&#8217;s quite easy to end up with a web of dependencies between different objects. I&#8217;ve read there are techniques to avoid hard-coupling, but I haven&#8217;t had time to dig up more, so this might be my fault.<br />
- Ugliness. I&#8217;m used to a HUGE-ULTRA-CLEAN separation between classes, libraries, modules, components and applications. In the webdev world, get ready to see PHP spitting HTML that has JS code spitting more HTML&#8230; Or function a() that creates another function in object b, that knows about object c and changes how c behaves. Things like that. In many known js libraries.<br />
- It&#8217;s not built for team work. At Webfuel we normally don&#8217;t need to talk much with each other about development. Half a dozen guys can be working together for half a year on the same project, committing code every 5 minutes to the same SVN, without breaking the code of others. This was quite easy to achieve much thanks to the structured nature of Actionscript, on top of some very simple practices borrowed from the JAVA world. Enter Javascript and you&#8217;ll see your code breaking the code of someone else. While developing JS in a team, it&#8217;s normal that developers need to talk a lot about what each one is doing, warning the other to be careful about X or Y, or asking the other &#8220;where did you put the code for&#8230;&#8221;. Actionscript makes teamwork a joy almost since moment zero &#8211; there&#8217;s no rocket science for a healthy teamwork environment, especially if you&#8217;re using a micro-framework. In Javascript, the trick is to put people working in very different unrelated parts of the projects and use techniques to encapsulate their code &#8211; I have yet to learn them, but I will soon. I&#8217;ve asked some JS developers about this but the ones I know are all lone-wolves so they didn&#8217;t understand what I was talking about (apart from the reaction &#8220;SVN?? WTF?? Use GIT!&#8221;.. hum&#8230; that wasn&#8217;t my question&#8230;)<br />
- Unpredictable. In AS3, the &#8220;this&#8221; refers to the instance where the method is defined. In JS, &#8220;this&#8221; can mean pretty much anything (remember AS2?). This was one of my biggest pain-points at first. Another problem is guessing by looking at the code the properties and functions of an Object. You can&#8217;t. A function in an object can be defined pretty most anywhere. It&#8217;s up to you (and your team; and your partners; and your library-providers) to make sure that you keep your house clean with everything organized in the right place.<br />
- Code practices. These are completely different from everything you know. I taught everyone here at Webfuel to not be afraid of writing many lines of code. I want them to write self-explanatory code, like if they were writing English. Enter Javascript. And cry. By some weird reason, people like to write as much code as possible in a single line, making it not only very hard to read, but also very hard to maintain. I&#8217;ve got used to seeing the #(&#8216;huge&#8217;).line({of: code, that: function() { looks() }).like(&#8216;a&#8217;).train(); . And this practice is everywhere, pretty most in all examples, libraries and worse: in books! One of the books I read had one line that took me around 5 minutes to understand! The fun part is that I had the book with me in San Francisco on the Flex Summit and I showed that line of code to several people just to scare the shit out of them. It worked!</p>
<p>Bottom line: if you&#8217;re an OOP purist, with many years of experience on software engineering on Flex and/or JAVA, you&#8217;re going to be scared. The mindset is different. The problems are different. The solutions are different. Even the slang is different. The good part: no compiling times. Which is actually a very good part&#8230;</p>
<p>There&#8217;s so many people betting in JS, shouldn&#8217;t it be good?</p>
<p>This is actually the question that confuses me the most. I simply don&#8217;t have an answer&#8230; Some people seem to be able to pretty much do anything they need but that doesn&#8217;t mean their needs are the same as mine. At the same time the language certainly has its fundamental problems that can frighten anyone who has a one-year-project ahead.<br />
One thing is certain: it&#8217;s being pushed forward and you can&#8217;t deny that.</p>
<p><strong>CoffeeScript</strong></p>
<p>I haven&#8217;t tried yet CoffeeScript. After reading a bit about CoffeeScript, I&#8217;ve learnt that you still need to be comfortable with Javascript to use CoffeeScript properly. And that&#8217;s what I&#8217;m doing. On the next project I might give CS (or other language that cross-compiles to JS) a try.</p>
<p><strong>Layouting and the DOM</strong></p>
<p>This was actually my biggest disappointment. Flex (&gt;4) is amazingly simple and powerful concerning pixel perfect skinning and layouting. You have pretty much no constraints in Flex regarding layouting, giving you immense freedom in creating perfectionist user-experiences. You don&#8217;t think &#8220;how am I going to implement this?&#8221; because there&#8217;s not much to know about Spark skinning: it&#8217;s really powerful and simple.<br />
The HTML world is different. You have to be aware of the constraints before creating the design and setting the user experience. I wasn&#8217;t aware of these constraints so we had to change the designs of the product we&#8217;re building a couple of times on the middle of the project to turn them into something possible/easier to achieve in HTML. I really hate constraints that end up affecting the user experience, but that&#8217;s how it is.</p>
<p>You have also to be prepared to accept small (and big) cross-browser rendering differences. They will happen. A lot. But that&#8217;s another topic&#8230;</p>
<p><strong>Optimizations/Preloading content</strong></p>
<p>Coming from the Flash world I was used to have to build one single application (the SWF) that has all (static) assets embedded. This results in pretty small files (yes, a SWF is smaller than it&#8217;s HTML+JS+CSS+Assets equivalent, even after minimization and gzip, and etc), only one request to the server (which ends up in a very low load on the server) and the assumption that all the content you need is available at runtime since moment 0. If you want to achieve a similar result in JS, you have to do it by hand &#8211; there&#8217;s nothing taking care of that for you. You have to join and minify Javascript and CSS files and resort to image sprites to reduce the number of requests to the server and the user perceived speed.</p>
<p>An image sprite is simply one PNG file with all the images and icons you use in your webapp. Then you simply apply that image as the background image of your UI component, using CSS to set a translation so it shows the icon/image you need. It&#8217;s quite simple, but make sure you load this image before your content appears on screen. The same applies to other content, in case you don&#8217;t want the user to see &#8220;glitches&#8221; on the layout while things load.</p>
<p>During loading I am hiding most divs (display: none) in the DOM, showing a preloader and after all content is ready (JS files through Lab.JS, Image Sprite, etc), I&#8217;m using jQuery to show stuff. It&#8217;s quite simple, actually, but of course, Flex did take care of all that for you&#8230; BTW, I saw this today, but I haven&#8217;t tried it yet: <a href="https://github.com/thinkpixellab/PxLoader">https://github.com/thinkpixellab/PxLoader</a></p>
<p>I&#8217;ve started today looking for a Javascript minifier. I need something that can automatically watch a folder with several JS files and merge them in a single minified file. If possible, assigning a revision number to the generated file. I haven&#8217;t yet found anything, but I&#8217;ll update this post if I have positive results.</p>
<p><strong>HTML(5), JS and Mobile</strong></p>
<p>If you think you&#8217;re going to build something in HTML(5)+JS that will work seamlessly and without problems in desktop AND mobile browsers, think again. Document based websites usually work without problems on both types of environments. But if you&#8217;re doing a more or less advanced user experience that relies in some CSS and JS magic, then be prepared to be disappointed when you open your content in your Mobile device. Not that the mobile browsers are bad &#8211; they&#8217;re actually pretty good. The problem is that the Mobile experience needs to be thought from the start &#8211; people will be using their huge clumsy fingers to interact, the screen will be smaller and the hardware resources are more limited. So at the end, you have to implement at least two different user experiences and switch between them according to the device capabilities using Media Queries. I haven&#8217;t yet tried Media Queries, so there&#8217;s not much I can say about this. I just mentioned this topic because I&#8217;ve seen several people getting frustrated after migrating their Flash applications to HTML expecting them to work right away on iOS. When in most cases it&#8217;s probably cheaper to keep the Flash version on the desktop and build a dedicated version for iOS.</p>
<p><strong>UI Components</strong></p>
<p>DateChooser, NumericStepper, TextInput, DropDownList, RadioButton, Panels, Accordions, HGroup, Charts, Lists with Renderers, DataGrid, etc, etc, etc, almost all types of components you can imagine are available in Flex. And they are extendable and completely skinnable. You have great control in your hands. In the HTML world, either you go with the limited browser components &#8211; that are not extendable and are hard to skin but they integrate with the browser and the device -, or you have to choose a component library like jQuery UI, ExtJS or zkoss, among other &#8211; that are more or less powerful, but don&#8217;t integrate with the browser or device.</p>
<p>After exploring dozens of options, all of them with their cons and cons, I felt unsecure on choosing one option, spending time and money learning it and teaching it to my team, to later conclude that I might have chosen the wrong one. So I&#8217;ve decided <strong>NOT</strong> to try any component library &#8211; apart from the limited jQuery UI -, simply because there are too many things changing right now and it&#8217;s very hard to predict which libraries will succeed and which ones will not. I&#8217;m going to be lazy (also because I can&#8217;t study thousands of stuff at the same time) and wait to see what other Flex developers will choose. In the meantime, as I said above I won&#8217;t be using HTML(5) to build RIAs, but only simple webapps. And for that, jQuery UI is up to the task (with some quirks here and there).</p>
<p><strong>Crossbrowser issues</strong></p>
<p>Heck, this is my biggest nightmare. I tremble everytime someone says the word &#8220;web browser&#8221;. Ok, I&#8217;m exaggerating a bit. Crossbrowser issues exist, they are a PITA and they will consume <strong>at least</strong> 30% of your time in a project (consider that when budgeting). But to be honest, at first I was expecting it would be a lot worse. Don&#8217;t take me wrong here, crossbrowser issues <strong>are</strong> a nightmare. Simply, they&#8217;re not as scary as I thought. If you follow me on twitter ( <a href="https://twitter.com/#!/joaosaleiro">https://twitter.com/#!/joaosaleiro</a> ) you&#8217;ve probably seen me cursing some web-browsers (hint: has two letters, starts with an I, ends with an E). Get ready to having to test something in several browsers and to change plans in the middle of the project because your approach doesn&#8217;t work as expected in one or two major browsers &#8211; especially if you&#8217;re building edge-cases and using HTML5 stuff.</p>
<p>You can&#8217;t miss this article: <a href="http://www.joelonsoftware.com/items/2008/03/17.html">http://www.joelonsoftware.com/items/2008/03/17.html</a></p>
<p>We had one crossbrowser issue this week that almost killed our current project. We needed to override the browser URL while the user was navigating the application and we couldn&#8217;t rely in simple URL hashes. We were hoping that history.pushState was up the task, but it happens that it is <strong>not</strong>. Erratic behavior in Safari, doesn&#8217;t work in IE, worked in Android until 2.3.3 and stopped working in 3.0 and 4.0 (WTF?)&#8230; Fortunately, we&#8217;ve found History.js which was built exactly to fix our problem and reduce (not fix) the cross-browser issues. See, the good thing is that crossbrowser issues happen to everyone, so there&#8217;s a high chance you&#8217;ll find a workaround on the web.</p>
<p>If you&#8217;re doing HTML5 you probably know about <a href="http://caniuse.com/">http://caniuse.com/</a> . If you don&#8217;t, go there.</p>
<p><strong>Productivity</strong></p>
<p>Our productivity is pretty bad right now (but we are getting better!). We&#8217;ve spent 11 weeks of two resources to build something in HTML(5)+JS that we would have built in 3 weeks with the same resources in Flex, without any stress at all. Of course, I take a big part of the guilt here: we&#8217;re still learning and during the first weeks there were a lot of readings, plan changes, tests and bumps on the road.<br />
The real issue is how tight the relation between productivity and your experience with the tech is: the bumps on the road are there, they happen to everyone and you won&#8217;t be able to predict them. So the only solution to be productive is to be experienced and be aware of those issues. They will simply happen, you&#8217;ll curse them, search the internet for hours, fix/hack them and the next time you&#8217;ll meet them, THEN, you&#8217;ll be prepared and productive.<br />
You&#8217;ll end up implementing workarounds and hacks (on top of other hacks) constantly. Coming from the Flex world, you&#8217;ll feel ashamed of your hack &#8211; don&#8217;t be. It&#8217;s normal. Most of the times, you won&#8217;t have another choice but to accept the hack and move on.<br />
Coming from a rapid development environment as Flex, productivity in JS and HTML can be quite frustrating until you get used to the bumps on the road. After you&#8217;re experienced, it will get better, but I don&#8217;t expect it to come any close to the productivity of Flex development in a near future.</p>
<p><strong>Conclusions</strong></p>
<p>The first conclusion is that we&#8217;ll keep using Flex in long-term enterprise RIAs projects, especially targeting installable desktop and mobile applications. Neither the open-standards nor us are ready to build the same type of experiences that our clients expect us to.</p>
<p>At the same time, we&#8217;ll be accepting smaller webapps. At this point, after three months, we&#8217;re already pretty comfortable building web experiences, so it&#8217;s a matter of raising the bar slowly, webapp after webapp. But I don&#8217;t think we&#8217;ll be able to do the same type of RIAs we were doing with Flex at least not in the next two years. Also, maintainability and its cost scare the shit out of me. And all the moving parts of HTML5 &#8211; new libraries appearing, others disappearing, browsers adding or dropping support of features, etc. There are lots of &#8220;ands&#8221;, &#8220;ifs&#8221; and &#8220;nots&#8221;.</p>
<p>I know I&#8217;ve missed half a dozen important topics and I know I&#8217;ll have dozens of other to write about in a couple of months. Actually, there are no real conclusions here &#8211; only open subjects. There&#8217;s much to be investigated and learned. I&#8217;m sure I&#8217;m not completely right in some of the above topics and I would love to get your feedback, pointing me in the right directions where I got it wrong. I can only hope that most of the stuff I pointed above won&#8217;t look as bad in a couple of months as it looks now. Or that browser vendors shake hands and decide to stop fragmenting the web. Maybe they could all be friends and adopt the same rendering engine and VM ( <em>giggles</em> ). For example, Google Dart. ( <em>yeah, right</em> &#8230;)</p>
<p>[Link to this post: <a href="https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs">https://plus.google.com/109047477151984864676/posts/CVGJKLMMehs</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.org/2012/01/16/joao-saleiro-after-6-years-doing-flex-am-i-moving-to-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

