<?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>Yeah, But Is It Flash? &#187; iPhone</title>
	<atom:link href="http://www.yeahbutisitflash.com/?feed=rss2&#038;tag=iphone" rel="self" type="application/rss+xml" />
	<link>http://www.yeahbutisitflash.com</link>
	<description>Random musings about all things Flash related</description>
	<lastBuildDate>Mon, 06 Sep 2010 21:43:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Glasgow Flash Meetup</title>
		<link>http://www.yeahbutisitflash.com/?p=1186</link>
		<comments>http://www.yeahbutisitflash.com/?p=1186#comments</comments>
		<pubDate>Wed, 19 May 2010 22:10:25 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=1186</guid>
		<description><![CDATA[Well Friday night was something special. The greatest minds in the Glasgow Flash community met up to discuss all things Flash related and to have a good ol&#8217; iPhone bashing session. But wait a minute, it turns out that even Flash devs are divided by all this Flash v iPhone malarkey. Incredulously some even seem [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1186"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1186&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Well Friday night was something special. The greatest minds in the Glasgow Flash community met up to discuss all things Flash related and to have a good ol&#8217; iPhone bashing session. But wait a minute, it turns out that even Flash devs are divided by all this Flash v iPhone malarkey. Incredulously some even seem to think that Steve jobs is right to ban Flash from the iPhone! What the frak! The night nearly ended-up in fisty-cuffs I tells ya. Oh and a special guest from Finland turned up too, but let me introduce everyone first.</p>
<p>So who are all these brilliant individuals? Well the group was kinda split into two camps &#8211; actual Flash developers (myself, Lindsey, Jamie and Dave), and special hardcore mobile Flash Player developers (Alex, Cameron, and Dave again). You mean to say you had actual C engineers from Adobe at Glasgow Flash Meetup? Well not exactly. You see these clever dudes used to work for a company who built their own Flash player for mobile even before Macromedia released Flash Lite 1. Pretty cool huh?</p>
<p><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num1_blog.jpg"><img src="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num1_blog.jpg" alt="Jamie shows off his Palm Pre and bitches about Flash." title="num1_blog" width="536" height="230" class="aligncenter size-full wp-image-1120" /></a><br />
To be honest, all the individuals I&#8217;ve mentioned are so good at what they do it makes me sick, but I&#8217;m gonna try and not hold it against them, and actually sing their praises a little. Let me start with <a href="http://twitter.com/Little_Robot" target="_">Lindsey</a> and <a href="http://twitter.com/lemonsanver" target="_">Jamie</a>. You see they&#8217;re both super special because unlike most people they&#8217;re pretty amazing coders <em>and</em> artists. What you don&#8217;t believe me? Well take a look at Lindsey&#8217;s <a href="http://pickle-town.typepad.com/photos/gallery/" target="_">gallery</a> then, and this <a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/cheeseburger.jpg" target="_">photo</a> of an amazing painting Jamie did of a cheeseburger sitting on an Atari ST. If you take a look at the comic strips in this post you&#8217;ll realise that Jamie is a bit of a loose cannon but please don&#8217;t hold it against him.</p>
<p><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num2_blog.jpg"><img src="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num2_blog.jpg" alt="What makes you think HTML5 and JavaScript will be any faster?" title="num2_blog" width="536" height="230" class="aligncenter size-full wp-image-1122" /></a><br />
Now onto the C engineers. Well <a href="http://twitter.com/archifishal" target="_">Alex</a> still works for the same company that produced the Flash Player and he&#8217;s also currently working on an XBox game in his spare time. I honestly think Alex must be the best C coder in the world. In fact I barely understand a word he says, mostly because I think he actually talks in C rather than English. Cameron too is a C guru who loves registering great domain names (<a href="http://www.ilovethebbc.com" target="_">his latest is a cracker</a>) and dreams of stealing money from cash machines.</p>
<p><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num3_blog1.jpg"><img src="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num3_blog1.jpg" alt="Jamie goes a bit mental." title="num3_blog" width="536" height="229" class="aligncenter size-full wp-image-1124" /></a><br />
Finally there&#8217;s the enigma known as <a href="http://twitter.com/kaeladan" target="_">Dave</a>. I could write several pages about Dave (in fact I did just that <a href="index.php?p=477">once</a>) but this quick paragraph should suffice. Dave is an Apple fan boy and can code in almost any language. For several years he worked as a C engineer with Alex and Cameron writing a Flash player. His career took a turn for the worse when he started sniffing glue. Before Dave knew it, his life was out of control and he found himself reduced to coding in ActionScript. Even today he works full-time as an ActionScript 3 developer, but secretly dreams of the day when Steve Jobs successfully purges the planet of Flash.</p>
<p><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num4_blog.jpg"><img class="aligncenter size-full wp-image-1113" title="comic_strip_4" src="http://www.yeahbutisitflash.com/wp-content/uploads/2010/05/num4_blog.jpg" alt="Flash rocks!" width="536" height="229" /></a><br />
It was a good night. Jamie and Lindsey had a big argument about Flash on mobile. I tried to stay impartial, as did Dave. Later on Jamie went a little crazy and started talking about killing animals or something!? The whole Flash on mobile/iPhone debate was very interesting. Jamie seemed to think that running Flash on mobile was simply impossible. Others argued that HTML5 and JavaScript on mobile wouldn&#8217;t be any faster than Flash. Personally I passionately believe that there is a place for Flash on mobile so it was good to see Lindsey fighting in my corner.</p>
<p>The night was made extra special by the appearance of a guest of Jamie&#8217;s who&#8217;s currently working for Nokia. I seem to remember loud music, lasers and pyrotechnics going off as he entered the room. But then again that might just be my mind playing tricks &#8211; I do like my Nokia phones. It was kinda like being in the same room as a rock star so it took me a while to pluck up the courage to talk to him. Glad I did though coz the dude had some pretty interesting things to say. For liking Nokia so much he installed a secret app on my phone. It turns any photographs you take into comic strips complete with speech bubbles. Pretty sophisticated stuff don&#8217;t you think? Sure did come in handy for this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=1186</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iPhone Packager: Smooth Scrolling</title>
		<link>http://www.yeahbutisitflash.com/?p=991</link>
		<comments>http://www.yeahbutisitflash.com/?p=991#comments</comments>
		<pubDate>Wed, 05 May 2010 12:00:51 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=991</guid>
		<description><![CDATA[Just thought I&#8217;d share a video of an iPhone app that I considered developing using Flash Professional CS5&#8242;s iPhone Packager. Of course I won&#8217;t be able to publish it to the App Store due to changes in Apple&#8217;s developer agreement but I still thought it would be interested to throw together a very rough prototype [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D991"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D991&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Just thought I&#8217;d share a video of an iPhone app that I considered developing using Flash Professional CS5&#8242;s iPhone Packager. Of course I won&#8217;t be able to publish it to the App Store due to changes in Apple&#8217;s developer agreement but I still thought it would be interested to throw together a very rough prototype and see how it performed.</p>
<div align="center"><object width="536" height="402"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11440002&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11440002&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="536" height="402"></embed></object></div>
<p>Well as you can see, even on my trusty old 1st gen iPod touch, I managed to achieve a more than acceptable frame rate using Flash. You can swipe horizontally to swap between a set of vehicles, or scroll vertically to change the skin of the current vehicle.</p>
<p>Okay, it&#8217;s hardly rocket science but there have been a lot of rumours going around of late that it&#8217;s almost impossible to get a decent frame rate on iPhone using Flash. That&#8217;s simply not true, but you do have to remember that you&#8217;re developing for a mobile device, which nearly always requires you to make special design and coding considerations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=991</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial for those living in a parallel universe</title>
		<link>http://www.yeahbutisitflash.com/?p=871</link>
		<comments>http://www.yeahbutisitflash.com/?p=871#comments</comments>
		<pubDate>Sun, 02 May 2010 16:00:27 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=871</guid>
		<description><![CDATA[Good news folks! If you use Flash and live in an alternate reality where Apple and Adobe get along just fine then you&#8217;ll probably find this tutorial quite useful. It details how to get the best performance when writing apps with Flash CS5 Professional&#8217;s Packager for iPhone. I suppose for everybody else there&#8217;s nothing stopping you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D871"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D871&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Good news folks! If you use Flash and live in an alternate reality where Apple and Adobe get along just fine then you&#8217;ll probably find this <a href="index.php?p=958">tutorial</a> quite useful. It details how to get the best performance when writing apps with Flash CS5 Professional&#8217;s Packager for iPhone.</p>
<p>I suppose for everybody else there&#8217;s nothing stopping you using Flash to quickly prototype your apps before committing to Objective C. What&#8217;s written in my tutorial will also benefit those wishing to target the Android platform and shows how to take advantage of a device&#8217;s GPU to increase animation performance.</p>
<p>Sure glad I only spent 5 minutes putting the tutorial together. It would have been quite irritating if I&#8217;d spent a few weeks on it only to find out Steve Jobs had changed the developers license agreement rendering all my hard work useless.</p>
<p>So anyway, here it is:</p>
<ul>
<li><a href="index.php?p=958">Packager for iPhone: Animation Render Performance</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=871</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Packager for iPhone: Render Performance</title>
		<link>http://www.yeahbutisitflash.com/?p=986</link>
		<comments>http://www.yeahbutisitflash.com/?p=986#comments</comments>
		<pubDate>Sun, 02 May 2010 15:55:23 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=986</guid>
		<description><![CDATA[Introduction CS5 is one of the most eagerly anticipated releases of Flash Professional in years and the inclusion of the iPhone Packager finally makes it possible for Flash developers to write exciting content for iPhone using the same tools they use day in, day out. Mobile development requires special design and coding considerations, and the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D986"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D986&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<h2>Introduction</h2>
<p>CS5 is one of the most eagerly anticipated releases of Flash Professional in years and the inclusion of the iPhone Packager finally makes it possible for Flash developers to write exciting content for iPhone using the same tools they use day in, day out.</p>
<p>Mobile development requires special design and coding considerations, and the iPhone is no exception. Although the Packager compiles all ActionScript byte code into native iPhone application code, an understanding of the Flash rendering pipeline on iPhone will help you maximize performance.</p>
<p>This article will lead you through code examples detailing how to get the best results from your iPhone when performing frame-based animation.<br />
<span id="more-986"></span></p>
<h2>Requirements</h2>
<p>To make the most of this article, you’ll need the following software and files:</p>
<ul>
<li>Flash Professional CS5</li>
<li>Sample files: <a href="http://www.yeahbutisitflash.com/downloads/iphone_render_performance.zip" parent="_">iphone_render_performance.zip</a></li>
</ul>
<h3>Prerequisite knowledge</h3>
<p>Prior experience of Flash and ActionScript 3 is advised. In order to run the included sample files you will need to know how to compile and deploy Flash content on iPhone.</p>
<h2>The iPhone Hardware</h2>
<p>Given the iPhone’s limited hardware specification compared to a desktop PC does this mean you have to heavily optimise existing Flash content or significantly change your development strategy for new projects? Not necessarily. The engineers at Adobe have done an amazing job of ensuring that the majority of existing Flash content will compile and run on iPhone without any modification. However, while Apple has carefully managed fragmentation across their devices, there are considerable hardware differences between the various revisions that you should consider.</p>
<p>The following list highlights the CPU differences across models:</p>
<ul>
<li>iPhone 8GB &#8211; 400 MHz</li>
<li>iPod touch 1st Gen &#8211; 400 MHz</li>
<li>iPhone 3G 8GB &#8211; 412 MHz</li>
<li>iPod touch 2nd Gen &#8211; 533 MHz</li>
<li>iPhone 3GS &#8211; 600 MHz</li>
<li>iPod touch 3rd Gen &#8211; 600 MHz</li>
</ul>
<p>As you can see there is a 200 MHz difference between the first generation and third generation devices. Apple has also upgraded the GPU along the way, enabling recent revisions to push many more pixels per frame and to cache more bitmap data.</p>
<p>When developing your Flash content for iPhone you should consider the following when coming to a decision regarding how best to architect or how heavily you’ll need to optimize:</p>
<ul>
<li>The baseline iPhone you want to target.</li>
<li>The graphical complexity of your application.</li>
</ul>
<p>In all but the simplest cases, targeting the sub 533 MHz devices will likely require you to use ActionScript 3 for animation and some optimization tricks to realise your vision. The faster devices on the other hand will give you a little more freedom to utilise Flash’s timeline for animation instead of ActionScript. Of course, if you’re desperate to squeeze as much as possible from even the higher-end devices then you’ll probably have to rely more heavily on ActionScript.</p>
<p>It&#8217;s possible to determine the device your code is running on by examining the <code>os</code> property of the <code>Capabilities</code> class.</p>
<h2>CPU v GPU Rendering</h2>
<p>With the exception of Pixel Bender, apps created using the iPhone packager will contain the exact same software renderer that is present in the Flash desktop player. Software rendering is taken care of by the iPhone’s CPU but Adobe has provided an optional rendering path that allows developers to take advantage of the GPU.</p>
<div align="center"><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/04/iPhone_settings_21.jpg"><br />
<div class="wp-caption center" style="width: 410px"><img title="Rendering Path" src="http://yeahbutisitflash.com/wp-content/uploads/2010/04/iPhone_settings_2.jpg" alt="Selecting the rendering mode." width="400" height="482" /><p class="wp-caption-text">Figure 1 selecting the rendering mode.</p></div></a></div>
<p>GPU acceleration allows hardware transformation and compositing of software rendered images that have been cached in the GPU’s texture memory. However to make full use of the GPU accelerated path you’ll need to write your content to specifically take advantage of the GPU, which will be explained later in this tutorial. You will also need to explicitly select the GPU rendering mode from the iPhone Settings panel as shown in figure 1.</p>
<p>As a general rule, use GPU rendering when writing applications such as games that perform a lot of rotation and translation of display objects. Otherwise, use CPU rendering.</p>
<h2>Vectors versus Bitmaps</h2>
<p>Vector shapes must be calculated by the CPU at run-time and can impact the performance of your app. Bitmap graphics on the other hand provide higher performance and should be considered ahead of vector artwork.</p>
<p>When utilising the GPU, Flash attempts to keep bitmaps on the GPU allowing them to be quickly composited. Images that don’t change across frames are ideal for GPU caching.</p>
<h2>Bitmap Caching</h2>
<p>You can increase performance by caching a display object internally on the GPU by setting its <code>cacheAsBitmap</code> property to <code>true</code>. This is useful for display objects that are translated along their x or y axes. After the initial render, the iPhone will use the internal cached version that has been stored on the GPU, giving a significant performance increase. When using GPU rendering, <code>Bitmap</code> display objects are always cached on the GPU. There is no need to explicitly set the <code>cacheAsBitmap</code> property for them.</p>
<p>Adobe has also provided the <code>cacheAsBitmapMatrix</code> property, which uses a <code>Matrix</code> object to render the bitmap data that is to be cached on the GPU. The GPU uses the resulting bitmap when performing translations, scaling, rotation or alpha changes, eliminating the need for the CPU to re-render the display object when its <code>x</code>, <code>y</code>, <code>xScale</code>, <code>yScale</code>, <code>rotateX</code>, <code>rotateY</code> or <code>alpha</code> properties change. As with <code>cacheAsBitmap</code>, <code>cacheAsBitmapMatrix</code> can lead to impressive performance gains.</p>
<p>Unfortunately neither <code>cacheAsBitmap</code> nor <code>cacheAsBitmapMatrix</code> are of any benefit when working with timeline based animation within a movie clip.</p>
<h2>Timeline Animation and its Performance Bottleneck</h2>
<p>Content that changes across frames must be re-rendered and depending on the rendering path, sent back to the GPU. Pixel traffic from the CPU to the GPU is expensive and should be minimized. Both rendering across frames and GPU traffic highlight a performance bottleneck that is present when performing animation via the timeline.</p>
<p>Consider a 24 frame animation. As the playhead moves across frames, each frame must be rendered. Therefore complex or concurrent animations can stress the CPU and impact performance.</p>
<p>In such situations you might be tempted to opt for the GPU rendering path but this would be a mistake. Not only would the CPU still be used to perform the software rendering of each frame, but there would also be an additional performance hit as each frame’s content is sent to the GPU.</p>
<p>Remember, traffic to the GPU is expensive and should be avoided during moments where a high and consistent frame rate is required. It makes little sense to transfer to the GPU bitmap data that is going to become redundant on the next frame.</p>
<p>If all 24 frames could be drawn upfront and sent to the GPU before the animation had begun then playback of that animation would be significantly smoother as each time the playhead changed position there would be reduced load on the CPU and no traffic going to the GPU.</p>
<p>However no such feature exists in Flash for one very good reason: ActionScript can be laced into each frame of a timeline, making it impossible to predict ahead of time how each frame will actually look when the playhead reaches it.</p>
<p>No matter what rendering path you opt for, timeline animation will be expensive. However it should at least be apparent that most existing Flash content that you wish to quickly port to iPhone should use CPU rendering.</p>
<p>This doesn’t mean you should avoid using the timeline, simply that you should be aware of the issue and the implications it may have for your application.</p>
<h3>A conventional timeline animation</h3>
<p>Let’s look at an example by opening <code>animation_timeline.fla</code> and publishing it for iPhone.</p>
<div align="center"><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/04/img2.png"><br />
<div class="wp-caption center" style="width: 510px"><img title="Timeline Animation" src="http://yeahbutisitflash.com/wp-content/uploads/2010/04/img2.png" alt="Timeline animation running on iPod touch." width="500" height="281" /><p class="wp-caption-text">Figure 2 animation_timeline.fla running on iPod touch.</p></div></a></div>
<p>As you can see by examining the FLA there really isn’t much to it. The stage contains multiple instances of a movie clip named <code>Wheel</code>. Moving inside the clip reveals that its timeline spans 24 frames with each frame containing a different bitmap. Together the series of bitmaps represents an animation of a wheel turning 360 degrees.</p>
<p>When published, the SWF will show several wheel instances rotating. With the frame rate set at 16fps the SWF runs without a hitch on even a modest desktop. Publish and deploy it on a first generation iPod touch however and the result isn’t what most Flash developers would expect.</p>
<p>Whereas the desktop version runs at a rock solid 16fps, the very same content on the iPod touch utilising CPU rendering struggles to reach 12fps.</p>
<p>Although bitmaps have been used for every frame of animation within the wheel’s timeline, which does give a slight benefit, the device is being hammered thanks to the timeline performance bottleneck outlined previously. Performance is being further degraded due to the number of instances.</p>
<p>Republishing with the GPU rendering path set doesn’t help matters. This time the app only manages approximately 7fps on a first generation iPod touch.</p>
<p>As the playhead moves to the next frame within each instance, that instance’s frame must be sent to the GPU before being composited. This process is done for every single instance even though the graphical content of each instance’s frame is identical to all the other instances on the stage.</p>
<p>Thankfully, where performance is critical, bitmap animation on the timeline can be replaced with an ActionScript alternative. Let’s now look at how to do that.</p>
<h2>Bitmap Animation using ActionScript</h2>
<p>Since all 24 frames of the spinning wheel animation are known upfront, it would help performance significantly if those frames were pre-cached on the iPhone’s GPU.</p>
<p>Whereas a movie clip only offers caching for its current frame, you can use ActionScript 3 to manually cache all the bitmaps required for an animation before playback begins.</p>
<h3>Manual bitmap caching</h3>
<p>Any instances of the <code>BitmapData</code> class are automatically cached on the GPU making it possible to significantly improve performance by storing the entire spinning wheel animation within a series of <code>BitmapData</code> objects. This is known as manual bitmap caching. There are several ways to do this but perhaps the easiest is to grab each animation frame from a bitmap sheet.</p>
<h3>Bitmap sheets</h3>
<p>A bitmap sheet (also known as a sprite sheet) is a single bitmap image that holds all the individual frames of an animation. The sheet is separated into a grid with each frame of the animation occupying identically sized slots. This can be seen in figure 3 where a bitmap sheet has been constructed that holds the frames of the spinning wheel animation in an 8&#215;3 grid. Each grid slot is 84 pixels wide and 83 pixels high.</p>
<div align="center"><a href="http://www.yeahbutisitflash.com/wp-content/uploads/2010/04/bitmap_sheet.jpg"><br />
<div class="wp-caption center" style="width: 510px"><img title="Bitmap Sheet" src="http://yeahbutisitflash.com/wp-content/uploads/2010/04/bitmap_sheet.jpg" alt="Bitmap sheet containing all 24 frames of the wheel animation." width="500" height="192" /><p class="wp-caption-text">Figure 3 A bitmap sheet containing all 24 frames of the wheel animation.</p></div></a></div>
<p>You can find the bitmap sheet from figure 3 by loading <code>animation_bitmaps.fla</code> and looking for <code>wheels.png</code> in the library. Right-clicking on <code>wheels.png</code> and selecting <code>properties</code> will reveal that the bitmap has been exported for ActionScript and that it has been given a class name of <code>Wheels</code>. This makes it possible to create an instance of the bitmap sheet in ActionScript and is shown below:</p>
<blockquote>
<pre><code>var bitmapSheet :Wheels = new Wheels();</code></pre>
</blockquote>
<p>The next step is to copy each frame from the bitmap sheet into a <code>BitmapData</code> object of its own. Each of these individual bitmaps will be automatically cached on the iPhone’s GPU. The code snippet below outlines this:</p>
<blockquote>
<pre><code>// The grid dimensions.
var gridW :int = 8;
var gridH :int = 3;

// Each frame’s dimensions.
var frameW :int = 84;
var frameH :int = 83;

// The actual bitmap sheet.
var bitmapSheet :Wheels = new Wheels();

// Store each frame’s bitmap data here.
var bitmaps :Vector.&lt;BitmapData&gt; = new &lt;BitmapData&gt;[];

// Chop the bitmap sheet into individual frames.
for( var y :int = 0; y &lt; gridH; y++ )
{
    for( var x :int = 0; x &lt; gridW; x++ )
    {
        // Create a BitmapData object for this frame.
        var bd :BitmapData = new BitmapData( frameW, frameH, true );

        // The rectangular area to be copied from the bitmap sheet.
        var srcRect :Rectangle = new Rectangle(
            ( x * frameW ), ( y * frameH ), frameW, frameH );

        // Copy the frame’s pixels from the bitmap sheet.
        bd.copyPixels( bitmapSheet, srcRect, new Point( 0, 0 ) );

        // Store the bitmap data in the array for use later.
        bitmaps.push( bd );
    }
}

// Manually remove bitmap data that is no longer required.
bitmapSheet.dispose();
bitmapSheet = null;</code></pre>
</blockquote>
<p>Let’s examine the code above in a little more detail.</p>
<p>The bitmap sheet is instantiated and an empty vector array that will store the bitmaps for each of the animation’s frames is initialised. A nested for-loop is then used to traverse the bitmap sheet, copying each of the frames from the sheet into their own <code>BitmapData</code> objects. Each of these <code>BitmapData</code> objects is added to the vector array for use later. Think of the vector array as a graphics library.</p>
<p>The final step is to manually dispose of the bitmap sheet’s bitmap data and release it for garbage collection. The bitmap sheet is no longer required since the frames of animation are now stored individually within the vector array and are in a format that we can more easily use.</p>
<h3>Rendering</h3>
<p>Now that we have a vector array of bitmap data it’s a fairly trivial task to render that content on screen. Simply create a <code>Bitmap</code> object; point its <code>bitmapData</code> property to one of the bitmap data objects stored in the vector array; and finally add the <code>Bitmap</code> object to the display list.</p>
<blockquote>
<pre><code>var wheel :Bitmap = new Bitmap();
wheel.bitmapData = bitmaps[ 0 ];
addChild( wheel );</code></pre>
</blockquote>
<p>Take a look at the code example above. It creates a bitmap and points it to the first frame of animation stored in the <code>bitmaps</code> vector array. It doesn’t take much more code to create a screen full of wheels:</p>
<blockquote>
<pre><code>var wheels :Vector.&lt;Bitmap&gt; = new &lt;Bitmap&gt;[];
var startX :int = -8;
var startY :int = -9;
var numWheelsX :int = 4;
var numWheelsY :int = 6;

for( var y :int = 0; y &lt; numWheelsY; y++ )
{
    for( var x :int = 0; x &lt; numWheelsX; x++ )
    {
        var wheel :Bitmap = new Bitmap( bitmaps[ 0 ] );
        wheel.x = startX + ( wheel.width * x );
        wheel.y = startY + ( wheel.height * y );

        wheels.push( wheel );

        addChild( wheel );
    }
}</code></pre>
</blockquote>
<p>All <code>Bitmap</code> objects are referencing the same bitmap data. This approach saves CPU resources and makes applications run faster, and it’s this approach that we’ll use to implement animation.</p>
<p>Before proceeding you might want to examine the ActionScript that’s sitting on the timeline of <code>animation_bitmaps.fla</code>. Take a look at the <code>createWheelBitmaps()</code> and <code>addWheels()</code> functions, both of which should look familiar. The first function creates the library of bitmaps from the bitmap sheet, while the second adds a series of wheels to the display list.</p>
<h3>Animating</h3>
<p>The final step is to actually perform some animation. If you remember, we can change a <code>Bitmap</code> object’s <code>bitmapData</code> property to point to any of the bitmaps held in the <code>bitmaps</code> vector array. Creating an animation should therefore be a simple case of changing that <code>bitmapData</code> reference on each frame update.</p>
<p>This can be achieved by using a variable to store the current animation frame that is to be rendered then incrementing that variable’s value every time the screen is redrawn. The variable itself is used to access the correct bitmap data stored in the <code>bitmaps</code> vector array. We’ll use an <code>ENTER_FRAME</code> event to keep track of the current animation frame and to update the bitmap data reference used by each wheel:</p>
<blockquote>
<pre><code>var frame :int = 0;
var maxFrames :int = bitmaps.length;
addEventListener( Event.ENTER_FRAME, update );

function update( e :Event ) :void
{
    // Loops the animation back to the first frame.
    if( ++frame == maxFrames )
    {
        frame = 0;
    }

    // Update each wheel’s bitmap data reference.
    for( var i :int = 0; i &lt; wheels.length; i++ )
    {
        wheels[ i ].bitmapData = bitmaps[ frame ];
    }
}</code></pre>
</blockquote>
<p>And that is more or less it. Publish <code>animation_bitmaps.fla</code> and install it on an iPhone or iPod touch. The performance increase over the timeline version should be significant, especially on earlier models. The device should now be happily churning out multiple wheel animations at a super smooth 16fps.</p>
<h2>Where to Go From Here</h2>
<p>At this point you now have the knowledge necessary to create your own frame-based animations using bitmap sheets and ActionScript 3. Spend some time understanding the example FLAs and consider how you might apply these techniques to your own iPhone apps. If performance is a priority then what you’ve learned from this tutorial should put you on the right track.</p>
<p>To research in more depth you may want to check the following resources:</p>
<ul>
<li><a href="http://help.adobe.com/en_US/Flash/CS5/Using/WSb03e830bd6f770ee-29e1e072124c0d552aa-8000.html" target="_">Packaging applications for the iPhone</a></li>
<li><a href="http://help.adobe.com/en_US/as3/mobile/index.html" target="_">Optimizing Performance for the Flash Platform</a></li>
<li><a href="http://www.youtube.com/iBrent#p/a/u/0/jxBQItCjoro" target="_">How to add a Provisioning Profile to your device through iTunes</a></li>
<li><a href="http://www.youtube.com/iBrent#p/a/u/1/ni-9jZPcZ1E" target="_">Create a Provisioning Profile in the iPhone Provisioning Portal</a></li>
<li><a href="http://www.youtube.com/iBrent#p/a/u/2/npm_aDZm6Qk" target="_">How to create an App ID in the iPhone Provisioning Portal</a></li>
</ul>
<p>Be sure to visit both the <a href="http://www.adobe.com/devnet/flash/" target="_">Flash Developer Center</a> and the <a href="http://www.adobe.com/devnet/devices/" target="_">Mobile and Devices Developer Center</a>, where you will find many helpful articles and sample projects over the coming months.</p>
<h2>Acknowledgements</h2>
<p>A huge thank you to Jay Armstrong and Jeff Swartz from Adobe for their valuable feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=986</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My First iPhone App!</title>
		<link>http://www.yeahbutisitflash.com/?p=295</link>
		<comments>http://www.yeahbutisitflash.com/?p=295#comments</comments>
		<pubDate>Sat, 01 May 2010 14:02:02 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[portfolio]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=295</guid>
		<description><![CDATA[Several months back I toyed with the idea of porting my audio cassette music player to iPhone using Flash Professional CS5&#8242;s iPhone Packager, and as you can see from the video below I&#8217;ve done just that. Although Apple are blocking content written in Flash from the App Store I still thought it would be a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D295"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D295&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Several <a href="index.php?p=55">months back</a> I toyed with the idea of porting my audio cassette music player to iPhone using Flash Professional CS5&#8242;s iPhone Packager, and as you can see from the video below I&#8217;ve done just that. Although Apple are blocking content written in Flash from the App Store I still thought it would be a worth while exercise and would probably be fairly straight forward to do.</p>
<p>Well it turned out to be anything but straight forward. The wisest Jedi of them all once said <a href="http://www.youtube.com/watch?v=FDezrybpuO8" target="_">&#8220;You must unlearn what you have learned&#8221;</a> and I swear the more that quote floats around my head the more convinced I am that Master Yoda had actually tried porting projects to Apple&#8217;s shiny little wonder.</p>
<div align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="536" height="402" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8446401&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="536" height="402" src="http://vimeo.com/moogaloop.swf?clip_id=8446401&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></div>
<p>I naively thought that my Flash Lite experience would ensure I was up and running in no time at all. However writing for iPhone brings about a whole new set of interesting problems for the developer to solve. I&#8217;ve spent the last two days taking apart my original audio cassette demo and reconstructing it so as best to take advantage of the iPhone&#8217;s hardware.</p>
<p>Its GPU loves texture maps, so converting as much of your content as possible to bitmaps and caching them on the GPU seems to get some pretty good results. As is the case with all mobile development, finding the best approach may require you to make compromises and small sacrifices in order to get the best performance.</p>
<p>I think the end result was worth the effort and I now understand considerably more about development for iPhone.</p>
<p><!--The iPhone may be an impressive piece of technology but its spec still falls well short of your average desktop, where Flash applications have a seemingly endless amount of CPU and RAM to help them get the job done. Although Apple have done a decent job of reducing fragmentation across their range of iPhones/iPod Touches, there is quite a performance gap between the first generation iPhones and the newer models and it's something developers need to be aware of when writing applications for as wide an audience as possible. This will ring true for anyone who has tried writing Flash Lite mobile apps, in order to get the best results you'll need to be disciplined and sometimes a little ruthless.--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=295</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Has Apple just nuked the Flash iPhone Packager?</title>
		<link>http://www.yeahbutisitflash.com/?p=768</link>
		<comments>http://www.yeahbutisitflash.com/?p=768#comments</comments>
		<pubDate>Thu, 08 Apr 2010 22:02:40 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=768</guid>
		<description><![CDATA[So Apple has just changed its developer agreement for those wishing to access the iPhone Developer Program and it could spell the end for Adobe&#8217;s iPhone Packager before it has even been released. Here&#8217;s the worrying snippet: 3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D768"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D768&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>So Apple has just changed its developer agreement for those wishing to access the iPhone Developer Program and it could spell the end for Adobe&#8217;s iPhone Packager before it has even been released. Here&#8217;s the worrying snippet:</p>
<blockquote><p>3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).</p></blockquote>
<p>With Apple and Adobe not exactly being the best of friends at the moment it is very possible that this is another blatant attempt by Apple to make Flash irrelevant. Unfortunately these new terms and conditions would also have serious implications for the excellent <a href="http://unity3d.com/" target="_">Unity</a> development platform too.</p>
<p>Fingers crossed it&#8217;s just a big misunderstanding.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=768</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3 iPhone Components</title>
		<link>http://www.yeahbutisitflash.com/?p=716</link>
		<comments>http://www.yeahbutisitflash.com/?p=716#comments</comments>
		<pubDate>Mon, 29 Mar 2010 21:58:52 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=716</guid>
		<description><![CDATA[Pop over to NoRestForTheWicked and you&#8217;ll find a set of nifty ActionScript 3 iPhone components by Nick Jonas. He&#8217;s decided to start small but what&#8217;s there looks great and should come in handy for anyone wishing to prototype potential iPhone UIs in Flash or for those simply wanting to get a head start with their [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D716"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D716&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Pop over to <a href="http://nrftw.net/as3/iphone/" target="_">NoRestForTheWicked</a> and you&#8217;ll find a set of nifty ActionScript 3 iPhone components by Nick Jonas. He&#8217;s decided to start small but what&#8217;s there looks great and should come in handy for anyone wishing to prototype potential iPhone UIs in Flash or for those simply wanting to get a head start with their Flash CS5 Professional iPhone projects.</p>
<div align="center"><a href="http://nrftw.net/as3/iphone/"><img src="http://www.yeahbutisitflash.com/wp-content/uploads/2010/03/as3_iphone_components_small.jpg" alt="" title="as3_iphone_components_small" width="536" height="347" /></a></div>
<p>Currently the SWC comes in at a tidy 72 Kb and the components themselves can be added to your project using only a few lines of code. In fact, from his site you can preview the components and even click on a link next to each to generate the code required to set it up; it really couldn&#8217;t be simpler. You won&#8217;t be able to use any of the iPhone&#8217;s native UI components from within Flash so Nick&#8217;s components will no doubt be a lifesaver for many.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=716</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Do people know what Flash is or care?</title>
		<link>http://www.yeahbutisitflash.com/?p=650</link>
		<comments>http://www.yeahbutisitflash.com/?p=650#comments</comments>
		<pubDate>Wed, 17 Mar 2010 23:33:55 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=650</guid>
		<description><![CDATA[Most of you will have seen the &#8216;What is a browser?&#8217; video where Google take to the streets of New York to see how many passers-by actually know what a web browser is. Even though they all seemed to surf the web regularly, only 8% of them knew what a web browser actually was. Well [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D650"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D650&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Most of you will have seen the <a href="http://www.youtube.com/watch?v=o4MwTvtyrUQ" target="_">&#8216;What is a browser?&#8217;</a> video where Google take to the streets of New York to see how many passers-by actually know what a web browser is. Even though they all seemed to surf the web regularly, only 8% of them knew what a web browser actually was. Well the video sparked an interesting conversation in the office between myself and a friend.</p>
<p>One question in particular came out from the conversation: Do people actually know what Flash is?</p>
<p>It would be really interesting to see a similar video asking this question to random folk. I suspect the results would be much worse than the miserable 8% from the Google video. Many of my friends and relatives know that I&#8217;m a Flash developer, but whenever I try explaining to them what Flash is their eyes glaze over, with some even seeming to slip into a semi-vegetative state.</p>
<p>So is this really a problem? Well it shouldn&#8217;t be. Your average user should just be able to enjoy browsing the web without caring about what technologies are being used to render the content. Unfortunately with the increasing penetration of the iPhone and the imminent release of the iPad looming, Adobe could be in trouble.</p>
<p>Most iPhone users, and I&#8217;d imagine this will be the case for those with iPads too, will probably get by with a stunted web experience. iPhone users have after all been making do with a Flash-less web for some time now and I suspect that most of them simply shrug their shoulders and move on when they stumble upon a Flash-based site.</p>
<p>If people don&#8217;t know what Flash is or even care then how are phone and tablet manufacturers going to convince them to purchase their Flash-enabled devices over Apple&#8217;s products? Other than geeks, who&#8217;s going to buy an Android phone because it says on the box that it supports Flash? Claiming that Flash-enabled devices will allow users to browser &#8216;the complete web&#8217; isn&#8217;t going to do much good either, since Joe Public already mistakenly believe that the iPhone and iPad can already do this.</p>
<p>For me it&#8217;s difficult to see round this problem. Perhaps the trick is not to mention Flash at all, instead focusing marketing on popular Flash sites that will only be available to these Flash 10.1 enabled devices. Or maybe Adobe are just hoping that the handsets they&#8217;re targeting will eventually grab a large enough market share giving Flash the mobile penetration it needs to be relevant.</p>
<p>My main concern however is the time this will take. The longer iPhone and iPad dominate in their spaces, the more websites will drop Flash in order to cater for the ever increasing number of users who have Apple devices.</p>
<p>I&#8217;m extremely excited by the prospect of seeing Flash on mobile but there is an ever decreasing window of opportunity to get Flash 10.1 out there. Let&#8217;s hope that Adobe and its many partners manage to get Flash on enough devices before a tipping point is reached and websites stop using it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=650</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday Adobe AIR</title>
		<link>http://www.yeahbutisitflash.com/?p=619</link>
		<comments>http://www.yeahbutisitflash.com/?p=619#comments</comments>
		<pubDate>Fri, 26 Feb 2010 22:35:55 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=619</guid>
		<description><![CDATA[Yup, it&#8217;s hard to believe but Adobe AIR is now two years old and it&#8217;s incredible just how far it has come in that short space of time. Given the growing debate over Flash&#8217;s future within the browser it&#8217;s often easy to forget that the Flash platform allows developers to create rich Internet applications that [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D619"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D619&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Yup, it&#8217;s hard to believe but Adobe AIR is now two years old and it&#8217;s incredible just how far it has come in that short space of time. Given the growing debate over Flash&#8217;s future within the browser it&#8217;s often easy to forget that the Flash platform allows developers to create rich Internet applications that can be deployed to the desktop across multiple operating systems.</p>
<div align="center"><object width="536" height="323"><param name="movie" value="http://images.tv.adobe.com/swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=5117&#038;context=145&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com/swf/player.swf" flashvars="fileID=5117&#038;context=145&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="536" height="323"></embed></object></div>
<p>AIR now powers a variety of applications used by enterprises and everyday consumers in applications for social networking, gaming, eLearning, subscription-based services, video, productivity tools, collaboration services, and so much more. And thanks to its support for iPhone, which is due to be delivered as part of the Flash Professional CS5 release, 2010 will be a very exciting year indeed for AIR.</p>
<p>If you are in any doubt at all regarding the power of Adobe AIR, take a look at the video above, which demonstrates a collaboration between Adobe and Wired magazine to produce a new digital magazine concept running on an Android-based tablet. It&#8217;s quite stunning.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=619</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WeeMee iPhone app</title>
		<link>http://www.yeahbutisitflash.com/?p=577</link>
		<comments>http://www.yeahbutisitflash.com/?p=577#comments</comments>
		<pubDate>Tue, 09 Feb 2010 13:51:04 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[WeeWorld]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=577</guid>
		<description><![CDATA[Yeah, okay, so this post has nothing to do with Flash whatsoever. But hey I&#8217;ve got plenty of love for other technologies &#8211; even the ones that don&#8217;t support Flash. So if you happen to have an iPhone along with the other zillion people out there then I thoroughly recommend you check out WeeWorld&#8217;s WeeMee [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D577"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D577&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Yeah, okay, so this post has nothing to do with Flash whatsoever. But hey I&#8217;ve got plenty of love for other technologies &#8211; even the ones that don&#8217;t support Flash.</p>
<p>So if you happen to have an iPhone along with the other zillion people out there then I thoroughly recommend you check out WeeWorld&#8217;s WeeMee Avatar Creator app that we released last week. It has climbed to the #4 spot in the Social Networking category of both the UK and US App Stores and it&#8217;s pretty ace.</p>
<p>Download it and give it a go at: <a href="http://itunes.com/apps/WeeMeeAvatarCreator" target="_">http://itunes.com/apps/WeeMeeAvatarCreator</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=577</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
