<?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>FlexWiz Blog &#187; Adobe</title>
	<atom:link href="http://blog.flexwiz.net/tag/adobe/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.flexwiz.net</link>
	<description>On Game Development and the Flash platform</description>
	<lastBuildDate>Sat, 17 Dec 2011 22:46:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Molehill and the DisplayList &#8211; A Step Back?</title>
		<link>http://blog.flexwiz.net/molehill-and-the-displaylist-a-step-back/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=molehill-and-the-displaylist-a-step-back</link>
		<comments>http://blog.flexwiz.net/molehill-and-the-displaylist-a-step-back/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 21:00:51 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Blitting]]></category>
		<category><![CDATA[Molehill]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=629</guid>
		<description><![CDATA[There has been a lot of buzz about  Molehill (or Stage3D) and GPU hardware acceleration in the upcoming Flash player 11. However, very little was said on the practical aspects on normal flash applications and games.  Now that the public beta is out, we can get a feel of what it really is, and see [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-868" title="" src="http://blog.flexwiz.net/wp-content/uploads/2011/07/molehill-300x164.png" alt="" width="300" height="164" />There has been a lot of buzz about  Molehill (or Stage3D) and GPU hardware acceleration in the upcoming Flash player 11. However, very little was said on the practical aspects on normal flash applications and games.  Now that the public beta is out, we can get a feel of what it really is, and see what you can and cannot do with it.</p>
<p>Here is my take on the issue of Stage3D/Molehill. While reading related tweets and posts, I notice a few misconceptions about Molehill &#8211; and this is something I’d like to address here.<br />
<span id="more-629"></span></p>
<h4>Dude, where is my Display List?</h4>
<p>Right from the start I felt something doesn&#8217;t feel right. If all the demos are using engines like Away3D, what&#8217;s in it for &#8216;plain&#8217; flash games? Apparently, Molehill (and Flash 11) does not include GPU hardware acceleration for the Display List.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-869" src="http://blog.flexwiz.net/wp-content/uploads/2011/07/zombie.jpg" alt="" width="468" height="265" /></p>
<p>First of all a note about architecture. Flash uses a retained mode rendering model, through its Display List. It means we don&#8217;t actually draw, we place display objects on the display list (and the stage) &#8211; the rest is done by the Flash player, where the drawing actually takes place on every frame.</p>
<p>In contrast, Moelhill API  is a thin wrapper for OpenGL  (or Direct3D in some cases) that provides low level drawing of 3D geometry and textures, including programmable shaders. It exists outside of the flash stage, almost as a standalone system. It is not designed to support, or implement drawing of display objects.</p>
<p>While not without its problems, the flash display list is the core feature of Flash: a simple and easy to use scene graph that gets processed and rendered on every frame. Its what makes Flash Flash: you would not want to imagine building any games or applications without it.</p>
<h4>Catching up to current technologies</h4>
<p>This year we started seeing GPU hardware acceleration in JavaScript/CSS, although not on all browsers. Browser have rendering engines that can accelerate primitive drawing for vectors and font when rasterizing them to canvas. I would expect no less from the flash player.<br />
The days when non-accelerated Display List was sufficient for developers are over. Here is what <a href="http://blog.bengarney.com/" target="_blank">Ben Garney</a>, a flash game heavyweight, says on <a href="http://blog.bengarney.com/2010/10/18/the-flash-display-list-and-games/" target="_blank">his blog</a>:</p>
<blockquote><p>[...] I use the display list for lots of things, just like any Flash developer. It’s a useful, flexible, and powerful tool.</p>
<p>But when I have specific, performance oriented needs, I ditch it in favor of something I can control completely. That’s why I always use a raster pipeline – drawing all my own pixels – for my game rendering. Using BitmapData.copyPixels has a consistent, reliable cost, whereas the cost of drawing a DisplayObject hierarchy, either on stage or via draw(), is highly variable and difficult to predict in terms of both memory and CPU consumption. [...]</p></blockquote>
<p>So developers like Ben Garney are opting to write their own renderers in order to gain better performance, but that is not an ideal long term solution. A much better one would be to utilize both multi-threading and GPU hardware acceleration for the standard flash Display List.</p>
<h4>Hello 1993</h4>
<p>For me, this is Deja vu all over again. It brings memories of the early 90s, were all we had was raw OpenGL or DirectX, and programming 3D was considered a black magic, some sort of witchcraft. We had to use special bitmap fonts and skimp on UI features for games, because everything was done in low-level, with no component libraries to speak of.<br />
A lot has changed since then, both in technologies and standards. Are we are expected to use the low level Molehill or use a Molehill based 3D engine for any plain old 2D project?</p>
<div id="attachment_865" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.flexwiz.net/wp-content/uploads/2011/05/1993-Ford-Mustang.jpg"><img class="size-full wp-image-865 " title="1993-Ford-Mustang" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/1993-Ford-Mustang.jpg" alt="" width="400" height="300" /></a><p class="wp-caption-text">1993 Ford Mustang</p></div>
<p>Bringing GPU acceleration to a small subset of flash applications just won&#8217;t cut it. Casual games that make a large part of Flash projects, need fast performing 2D display as well as complex UI. Forcing developers to shoehorn Molehill into any 2D project is just wrong. It&#8217;s not a good solution and would push more Flash developers to jump ship and look for alternatives.</p>
<h4>GPU Acceleration for All</h4>
<p>Don’t get me wrong: I am a 3D enthusiast myself, and did a lot of 3D programming on different games way before I started using Flash &#8211; and 3D API in flash is better than none. I simply don’t like the idea of having to choose between hardware acceleration or the Display List and not both of them together.</p>
<p>The next logical step for Adobe would be to build GPU hardware acceleration into the Flash Display List, so that the bottleneck of scene rendering would be removed. Yes, it carries some risks since Flash would become dependent on display driver vendors to run consistently on different platforms, but surely this can be resolved by partnering with nVidia and AMD. If done correctly, any existing AS3 code would be accelerated without any changes.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/molehill-and-the-displaylist-a-step-back/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Facebook AS3 API Blues</title>
		<link>http://blog.flexwiz.net/facebook-as3-api-blues/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=facebook-as3-api-blues</link>
		<comments>http://blog.flexwiz.net/facebook-as3-api-blues/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 02:34:27 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=824</guid>
		<description><![CDATA[While working on adding Facebook connectivity for a Flash based project, I found myself spending way too much time fighting with the Facebook-as3 API. For a Flash developer, there are two basic ways of using the Facebook API: directly with HTTP requests or with the help of Adobe&#8217;s facebook-as3 API. This library is maintained by [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-841" src="http://blog.flexwiz.net/wp-content/uploads/2011/07/fbLogo.png" alt="" width="140" height="140" />While working on adding Facebook connectivity for a Flash based project, I found myself spending way too much time fighting with the Facebook-as3 API. For a Flash developer, there are two basic ways of using the Facebook API: directly with HTTP requests or with the help of Adobe&#8217;s <a href="http://code.google.com/p/facebook-actionscript-api/" target="_blank">facebook-as3 API</a>. This library is maintained by Adobe, and you would expect it to be well documented and reliable, but it has some major issues, most of them are with the OAuth 2.0 authentication process.<span id="more-824"></span></p>
<h3>How to make Facebook-AS3 API to actually work without going insane</h3>
<p>Note that the last major change in the API was in April 2010 with the introduction of OAuth 2.0 in Facebook. At the time of this writing, version 1.6.1 is the current version of the API.</p>
<p>First, the setup for a web based project is a bit messy, since you need to register your Facebook app with a specific URL and put some code in the Html wrapper &#8211; for a full explanation read <a href="http://www.blog.elimak.com/2011/03/connect-flash-with-facebook-using-the-adobe-sdk-for-facebook/">this post</a>.</p>
<h4>OAuth in AS3</h4>
<p>Logging in a Facebook user with OAuth2 is simple enough if you use HTTP and JS. Issue a call with the AppID and permissions and it receive the access token in the JS callback function. Not so with the facebook-as3 API: you need to call Facebook.init() and then depending on the result call Facebook.login() to handle the login prompt.</p>
<p><img class="size-medium wp-image-842 alignnone aligncenter" src="http://blog.flexwiz.net/wp-content/uploads/2011/07/03_fblogin_popup-300x167.png" alt="" width="400" height="224" /></p>
<h4>Problem #1 - Facebook.init() returns (null, null)</h4>
<p>The official documentation says Facebook.init will return a session on success and null on fail &#8211; however it actually returns only the session in the result, or null if you are not logged in. The second argument (fail object) is always null. Just this simple discovery had cost me a few days of hair pulling, so don&#8217;t rely on the docs.  Yes, they are supposed to be updated frequently by Adobe but somehow this detail slipped out [facepalm].</p>
<h4>Problem #2 &#8211;  Facebook.login() returns null regardless of actual login</h4>
<p>Calling login right after Facebook.init() returns may not work as expected, and worse &#8211; results will vary depending on the browser and Flash player version (For me it works in Chrome and fails on IE8).</p>
<p>Don&#8217;t waste time on the official docs, since there is no mention of that there. It turns out that Flash player 10 imposes a security restriction (that may or may not be related to the browser) that will cause login to fail silently and return right away with null and lose connection with the login popup, which is very confusing since the API call to Facebook actually works in the browser, only not in your code [facepalm again].</p>
<h3>My Solution</h3>
<p>There is more than one solution to the authentication process, and it really depends on what you need. You could avoid the  facebook-as3 library all together, as some developers on the forums suggested. There are no restrictions in HTTP/JS login, and it is painless. But what about the AS3 code?</p>
<p>After looking at a few samples, it appears that the simple solution would be to have a login button in your app, and require the user to click it to invoke the login popup. Simply put the Facebook.login call in the button handler function and it works perfectly.<br />
However, you need to prevent subsequent calls to Facebook.login after a successful once, so make sure you hide or disable the button or face the consequences (I managed to crash IE8 with multiple login calls).  See sample code below:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">	Facebook<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">init</span><span style="color: #000000;">&#40;</span>APPID<span style="color: #000066; font-weight: bold;">,</span> onInit<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #000066; font-weight: bold;">...</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onInit<span style="color: #000000;">&#40;</span>result<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000066; font-weight: bold;">,</span> fail<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
	<span style="color: #000000;">&#123;</span>
		btnLogin<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">visible</span> = <span style="color: #000000;">&#40;</span>result==<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>result <span style="color: #000066; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// We have a session</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;you are logged in&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;need to log in&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #009900; font-style: italic;">// Login Button handler</span>
	<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> btnLogin_clickHandler<span style="color: #000000;">&#40;</span>event<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
	<span style="color: #000000;">&#123;</span>
		Facebook<span style="color: #000066; font-weight: bold;">.</span>login<span style="color: #000000;">&#40;</span>onLogin<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> onLogin<span style="color: #000000;">&#40;</span>result<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000066; font-weight: bold;">,</span> f<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>result == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Access denied!!!&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Login complete.&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			btnLogin<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">enabled</span>= <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span></pre></div></div>

<p>If anybody has a better solution I would love to hear.  Hopefully someone at Adobe will notice and modify the documentation to better reflect the reality, or even better &#8211; fix those issues inside the AS3 API so that it would be consistent with the HTTP/JS API.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/facebook-as3-api-blues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Take on the State of Flash</title>
		<link>http://blog.flexwiz.net/state-of-flash/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=state-of-flash</link>
		<comments>http://blog.flexwiz.net/state-of-flash/#comments</comments>
		<pubDate>Thu, 12 May 2011 17:10:27 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.flexwiz.net/?p=640</guid>
		<description><![CDATA[I had a very busy couple of weeks, and between attending FITC Toronto and preparing my game for the upcoming Toronto Game Jam I could not complete the post I planned, so for now just a few rants and comments on the current state of Flash platform and the industry. Flash is still ahead of all the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-651" title="fitc_2011" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/fitc_2011-300x173.jpg" alt="" width="300" height="173" />I had a very busy couple of weeks, and between attending <a href="http://www.fitc.ca/" target="_blank">FITC Toronto</a> and preparing my game for the upcoming <a href="http://www.tojam.ca/" target="_blank">Toronto Game Jam</a> I could not complete the post I planned, so for now just a few rants and comments on the current state of Flash platform and the industry.<span id="more-640"></span></p>
<h4>Flash is still ahead of all the others</h4>
<p>OK, so this &#8216;Flash is dead we all do HTML5 now&#8217; argument is getting a bit tired, but the trend now is to offload simple projects to to traditional web tools &#8211; HTML, JavaScript, CSS and the like. I can only see good in that &#8211; clients would use their web developers for trivial web site projects, leaving stuff like games and complex animation for Flash programmers like myself. I say good riddance.</p>
<p>As already mentioned by Stefan Richter in &#8220;<a href="http://www.flashcomguru.com/index.cfm/2011/5/11/why-flash-will-be-fine" target="_blank">Why Flash will be fine</a>&#8220;, the Flash platform has never been more popular. Adobe is finally focusing on making it better and faster and the Flash developer community has always been characterized by talented people who are passionate about their code and art.</p>
<p>I was really impressed with the new AIR 2.7 for iOS, and now seriously consider developing games for the iPad, something I could not even imagine a year ago. As Jesse Warden says in <a href="http://jessewarden.com/2011/05/adobes-wowza-litigation-insecurity-prevention.html" target="_blank">his blog</a>,  there are lots of technology choices for developers, like iOS, Andriod native, <a href="http://www.anscamobile.com/corona/" target="_blank">Corona SDK</a> and <a href="http://unity3d.com/" target="_blank">Unity3D</a> to name a few, and there is plenty of room for everyone in todays market and no lack of opportunities.</p>
<h4>But is lagging behind</h4>
<p>My next related comment is on the promised features in Flash player 11, namely Molehill (or Stage3D) and worker threads. FP11 is now part of Adobe Flash incubation program and in public beta.<br />
<img class="size-medium wp-image-652 alignright" title="Flash3D" src="http://blog.flexwiz.net/wp-content/uploads/2011/05/Flash3D-300x156.png" alt="" width="300" height="156" />For years now, Flash developers, and game developers in particular, have struggled with the lack of two main features: hardware accelerated graphics and multi-threading. This is almost unthinkable: multicore processors have gone mainstream 5 or 6 years ago and we can&#8217;t utilize them. Graphic cards are popular for the last 15 years or so, but flash player still does all the rendering in software, on the CPU (with the exception of video).</p>
<p>I remember being excited about 3D back in 1998, while programming with OpenGL and DirectX. A lot has changed since then.  Take the XNA platform for example &#8211; it had all these features on version 1.0, back in 2006.</p>
<p>To say that this is long overdue would be an understatement. New features like 3D and multi-threading take time to sink in and mature, and since FP11 will only the first generation, who knows how many more releases it would take for Adobe to get it right.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/state-of-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex 4.5 – A ‘Hero’s Welcome</title>
		<link>http://blog.flexwiz.net/flex-4-5-a-hero-welcome/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-4-5-a-hero-welcome</link>
		<comments>http://blog.flexwiz.net/flex-4-5-a-hero-welcome/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 23:20:43 +0000</pubDate>
		<dc:creator>theWiz</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Hero]]></category>
		<category><![CDATA[Skinning]]></category>
		<category><![CDATA[Spark]]></category>

		<guid isPermaLink="false">http://flexwiz.amosl.com/?p=433</guid>
		<description><![CDATA[It&#8217;s been a while since Flex 4.5 public beta was released. I spent some time with the the new SDK and following blogs, getting the feel of it.  The 4.5 &#8220;Hero&#8221; SDK is expected to release later this year, along with a new version of flash player (10.2) . In previous posts (Spark pains) I expressed my disappointment [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-449" style="margin: 4px;" title="hero" src="http://blog.flexwiz.net/wp-content/uploads/2011/01/hero.png" alt="" width="216" height="176" />It&#8217;s been a while since Flex 4.5 public beta was released. I spent some time with the the new SDK and following blogs, getting the feel of it.  The 4.5 &#8220;Hero&#8221; SDK is expected to release later this year, along with a new version of flash player (10.2) .</p>
<p>In previous posts (<a href="http://blog.flexwiz.net/flex/spark-pains-is-it-worth-it/" target="_blank">Spark pains</a>) I expressed my disappointment with Spark&#8217;s lack of functionality versus the Flex 3 mx components it came to replace. <a href="http://jessewarden.com/2010/09/adobe-please-bring-flash-builder-up-to-par.html" target="_blank">Like others</a>, I shared the notion that Spark is half baked, and Adobe should have included a more complete solution in version 4.0 or 4.1, at least for the included components like button or image. Let&#8217;s see what is in for us in the upcoming Flex 4.5 (&#8220;Hero&#8221;).</p>
<p><span id="more-433"></span></p>
<h3>Spark Button: The return of the Icon</h3>
<p>Good news &#8211; the icon style is back to Spark button!  After spending a lot of time writing custom skins and specialized classes I was glad to see that the spark button now supports icon out of the box, just like the good old mx button. Too bad it came  late for my recent projects, all using spark buttons, cluttered with custom skins only to achieve the trivial task of putting an icon in a button.</p>
<p>By any reasonable standard, we should have had these  in Flex 4.0 release last year.</p>
<p>I can only reiterate the comment in a post in the <a href="http://blog.flexexamples.com/" target="_blank">Flex Examples</a> blog: all that to get what we’ve had for years in Flex 3.  I really am glad these basic features are back, but was it really necessary to wait over a year to have it back (and require Flash 10.2 player)?</p>
<p>Really, Adobe &#8211; is that too much to expect?</p>
<h3>Spark Bitmap Image</h3>
<p>Another source of frustration for me was the spark BitmapImage. Made to replace mx image, it gave similar functionality&#8230; well, almost. No support for runtime loading and display of timeline swfs forced me and my team to fall-back to mx image for no other alternative.</p>
<p>Even worse, the overblown security model made image caching almost impossible to implement. Try constantly loading images from services like flikr and facebook and see what I mean. Policy files, trusted or untrusted domains, nothing seems to work properly. To actually make it possible to access bitmapData, everyone uses a PHP script to bypass the flash player security model &#8211; not very elegant.</p>
<p>A Hero to the rescue, Flex 4.5 brings the new and improved  BitmapImage with all of mx image features and built it image caching &#8211; Hallelujah!  they even threw in smart scaling and letterbox mode.  It&#8217;s too soon to comment on how effective it is since it is still in beta, but kudos to Adobe for doing the right thing.</p>
<p>What more can I say? Better late than never.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexwiz.net/flex-4-5-a-hero-welcome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

