<?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; Flash CS5</title>
	<atom:link href="http://www.yeahbutisitflash.com/?feed=rss2&#038;tag=flash-cs5" 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>Flash Camp Birmingham Postponed</title>
		<link>http://www.yeahbutisitflash.com/?p=1863</link>
		<comments>http://www.yeahbutisitflash.com/?p=1863#comments</comments>
		<pubDate>Sun, 05 Sep 2010 15:16:47 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash Camp]]></category>
		<category><![CDATA[flash camp]]></category>
		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=1863</guid>
		<description><![CDATA[Hopefully you&#8217;re all as lazy as me and haven&#8217;t actually booked travel and accommodation to Flash Camp Birmingham. Why? We&#8217;ll because it has been postponed that&#8217;s why. Flash Camp won&#8217;t take place until 24th March 2011 now!!! That&#8217;s so far in the future we might all be living on the moon by then. At least [...]]]></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%3D1863"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1863&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>Hopefully you&#8217;re all as lazy as me and haven&#8217;t actually booked travel and accommodation to Flash Camp Birmingham. Why? We&#8217;ll because it has been postponed that&#8217;s why.</p>
<p>Flash Camp won&#8217;t take place until 24th March 2011 now!!! That&#8217;s so far in the future we might all be living on the moon by then.</p>
<p>At least it gives me a bit more time to get organised enough to possibly attend.</p>
<p>If you think I&#8217;m making this up then hopefully this link to the <a target="_" href="http://www.flashmidlands.com/?p=482">Flash Midlands website</a> will prove that I&#8217;m not.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=1863</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with AIR for Android</title>
		<link>http://www.yeahbutisitflash.com/?p=1685</link>
		<comments>http://www.yeahbutisitflash.com/?p=1685#comments</comments>
		<pubDate>Sun, 08 Aug 2010 16:25:03 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[air 2.5]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=1685</guid>
		<description><![CDATA[You&#8217;ve probably noticed my posts haven&#8217;t been as frequent of late. We&#8217;ll it&#8217;s all Adobe&#8217;s fault! You see I&#8217;ve been spending way too much time coding cool stuff for my Google Nexus One rather than blogging. Hold on, actually maybe that&#8217;s a good thing. Anyway, I have managed to finish an AIR for Android app [...]]]></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%3D1685"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1685&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>You&#8217;ve probably noticed my posts haven&#8217;t been as frequent of late. We&#8217;ll it&#8217;s all Adobe&#8217;s fault! You see I&#8217;ve been spending way too much time coding cool stuff for my Google Nexus One rather than blogging. Hold on, actually maybe that&#8217;s a good thing.</p>
<p>Anyway, I have managed to finish an AIR for Android app that I&#8217;ve been working on and will hopefully be able to post some videos of it in a day or so. In the meantime I thought I&#8217;d share some resources I&#8217;ve found extremely useful over the last few weeks.</p>
<ul>
<li><a href="http://www.gotoandlearn.com/play.php?id=123" target="_">Setting up your development environment</a></li>
<li><a href="http://www.gotoandlearn.com/play.php?id=124" target="_">Accessing the camera on your Android device</a></li>
<li><a href="http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b24b55b57a124b32b5b57-8000.html" target="_">ActionScript 3.0 API support for mobile devices</a></li>
<li><a href="http://sebleedelisle.com/2010/08/debug-air-android/" target="_">Debugging with AIR for Android</a></li>
<li><a href="http://blog.kevinhoyt.org/?p=548" target="_">Flash Android Components</a></li>
<li><a href="http://www.dgrigg.com/post.cfm/06/23/2010/Developing-Flash-applications-for-Android" target="_">Developing Flash and Flex applications for Android</a></li>
<li><a href="http://www.riagora.com/2010/07/android-air-and-the-camera/" target="_">Android, AIR and the Camera</a></li>
<li><a href="http://www.adobe.com/devnet/flash/articles/authoring_for_multiple_screen_sizes.html" target="_">Authoring mobile Flash content for multiple screen sizes</a></li>
<li><a href="http://www.flashmobileblog.com/2010/07/17/air2-5-stagewebview-demo-oauth-support/" target="_">AIR2.5 StageWebView</a></li>
</ul>
<p>I&#8217;m really enjoying AIR 2.5 for Android. Performance is good and the workflow makes coding and deployment easy.</p>
<p>If you haven&#8217;t already signed-up for the prerelease program then I&#8217;d recommend you do so by clicking <a href="https://prerelease.adobe.com/callout/default.html?callid={AEF64EB4-A977-4317-909A-14AD8014BA21}" target="_">this link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=1685</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Camp Birmingham</title>
		<link>http://www.yeahbutisitflash.com/?p=1674</link>
		<comments>http://www.yeahbutisitflash.com/?p=1674#comments</comments>
		<pubDate>Mon, 02 Aug 2010 22:53:12 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash Camp]]></category>
		<category><![CDATA[flash camp]]></category>
		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=1674</guid>
		<description><![CDATA[If you missed Flash Camp Manchester then don&#8217;t worry. The guys at Flash Midlands have just announced that Flash Camp Birmingham will be held on Tuesday 7th September at Birmingham Library Theatre. It&#8217;s the same deal as before &#8211; entry is free and an excellent selection of speakers will be attending including Mark Doherty (Adobe), [...]]]></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%3D1674"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1674&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>If you missed Flash Camp Manchester then don&#8217;t worry. The guys at Flash Midlands have just announced that Flash Camp Birmingham will be held on Tuesday 7th September at Birmingham Library Theatre.</p>
<p>It&#8217;s the same deal as before &#8211; entry is free and an excellent selection of speakers will be attending including <a href="http://www.flashmobileblog.com/" target="_">Mark Doherty</a> (Adobe), <a href="http://sebleedelisle.com/" target="_">Seb Lee-Delisle</a> (Plug-in Media), <a href="http://jameswhittaker.com/" target="_">James Whittaker</a> (TweetDeck) and <a href="http://blog.flashgen.com/" target="_">Mike Jones</a> (Adobe). Oh and there will be a prize draw at the end of the day with goodies up for grabs including O&#8217;Reilly Books, Flash on the Beach tickets, Adobe Software and SecureSWF Software.</p>
<p>So do yourself a favour and register via this link: <a href="http://flashcampbirmingham.eventbrite.com/" target="_">http://flashcampbirmingham.eventbrite.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=1674</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Camp Manchester</title>
		<link>http://www.yeahbutisitflash.com/?p=1330</link>
		<comments>http://www.yeahbutisitflash.com/?p=1330#comments</comments>
		<pubDate>Tue, 08 Jun 2010 19:54:29 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[flash camp]]></category>
		<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[flash player 10.1]]></category>
		<category><![CDATA[papervision]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=1330</guid>
		<description><![CDATA[I&#8217;ve been told that all the cool kids will be heading to Manchester on the 8th of July for Flash Camp. Kindly organised by Flash Midlands the event will take place at Manchester Metropolitan University Business School for an afternoon and an evening of presentations, discussions and demonstrations of all things Flash. It sounds like [...]]]></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%3D1330"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D1330&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;ve been told that all the cool kids will be heading to Manchester on the 8th of July for Flash Camp. Kindly organised by Flash Midlands the event will take place at Manchester Metropolitan University Business School for an afternoon and an evening of presentations, discussions and demonstrations of all things Flash.</p>
<p>It sounds like there will be some really exciting content on show including Flash Player 10.1 on Android, Papervision 3D, Flash Builder 4 and Flash Professional 5. So if you want to up your street cred make sure you <a href="http://flashmidlands.com/flashcamp/manchester.html" target="_">register online</a> and get yourself to Manchester.</p>
<p>Oh and did I tell you the best bit? It&#8217;s completely FREE!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=1330</wfw:commentRss>
		<slash:comments>0</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>Exciting new features for Device Central CS5</title>
		<link>http://www.yeahbutisitflash.com/?p=930</link>
		<comments>http://www.yeahbutisitflash.com/?p=930#comments</comments>
		<pubDate>Wed, 28 Apr 2010 21:02:40 +0000</pubDate>
		<dc:creator>Christopher</dc:creator>
				<category><![CDATA[Flash CS5]]></category>
		<category><![CDATA[Device Central CS5]]></category>
		<category><![CDATA[gamesflash]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://www.yeahbutisitflash.com/?p=930</guid>
		<description><![CDATA[I&#8217;m a big fan of Adobe Device Central and have been using it over the years on various mobile projects. It really was a lifesaver when porting my GamesFlash project from S60 3rd Edition smartphones to the mass market Symbian Series 40 handsets. With their limited CPU and memory constraints, every byte saved mattered and optimising [...]]]></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%3D930"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.yeahbutisitflash.com%2F%3Fp%3D930&amp;source=chriscaleb&amp;style=compact" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;m a big fan of Adobe Device Central and have been using it over the years on various mobile projects. It really was a lifesaver when porting my <a href="index.php?p=154">GamesFlash</a> project from S60 3rd Edition smartphones to the mass market Symbian Series 40 handsets. With their limited CPU and memory constraints, every byte saved mattered and optimising in order to gain maximum performance was critical.</p>
<div align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="536" height="302" 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=10930358&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="302" src="http://vimeo.com/moogaloop.swf?clip_id=10930358&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>Device Central&#8217;s huge catalogue of devices and its ability to accurately simulate the performance of these devices made it possible to test my code without having to spend a fortune on hardware. The Memory Inspector was an ideal way to check if my code was about to blow the heap on any one device, and was great for identifying areas of code that were consuming too much RAM.</p>
<div align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="536" height="302" 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=10955690&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="302" src="http://vimeo.com/moogaloop.swf?clip_id=10955690&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>However there have been some glaring omissions that Adobe are thankfully rectifying in Device Central CS5. For the first time you&#8217;ll be able to actually use the Flash debugger when running content within the device emulator. It&#8217;s hard to believe this feature wasn&#8217;t made available sooner but I&#8217;m delighted that it is finally making it into a release. The other great feature I&#8217;m looking forward to is the ability to emulate a device&#8217;s on-board accelerometer.</p>
<p>Take a look at the two videos from Adobe Platform Evangelist Mark Doherty as he gives a guided tour of some of these new features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yeahbutisitflash.com/?feed=rss2&amp;p=930</wfw:commentRss>
		<slash:comments>0</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>
	</channel>
</rss>
