<?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>dispatchEvent()™ &#187; AIR</title>
	<atom:link href="http://dispatchevent.org/category/air/feed/" rel="self" type="application/rss+xml" />
	<link>http://dispatchevent.org</link>
	<description>Collective thoughts on the Flash Platform, iOS, Unity, and any other technology we use.</description>
	<lastBuildDate>Mon, 23 Apr 2012 19:07:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Don&#8217;t Panic.</title>
		<link>http://dispatchevent.org/mims/dont-panic/</link>
		<comments>http://dispatchevent.org/mims/dont-panic/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 22:45:38 +0000</pubDate>
		<dc:creator>Mims H Wright</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[IRL]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=900</guid>
		<description><![CDATA[Dear Flash &#38; Flex Interactive Developers, keep calm and carry on. The news from Adobe seems like a big deal now but I&#8217;m not sure that it&#8217;s soon enough to judge what the long term impact will be. In my opinion, it&#8217;s not yet time to panic (is it ever?) and in this post, I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Dear <strike>Flash &amp; Flex</strike> Interactive Developers, keep calm and carry on. The news from Adobe seems like a big deal now but I&#8217;m not sure that it&#8217;s soon enough to judge what the long term impact will be. In my opinion, it&#8217;s not yet time to panic (is it ever?) and in this post, I&#8217;ll talk about why.  </p>
<p>First, if you don&#8217;t know what I&#8217;m talking about, check out the news. I think the best explanation comes from <a href="http://www.mikechambers.com/blog/2011/11/11/clarifications-on-flash-player-for-mobile-browsers-the-flash-platform-and-the-future-of-flash/">Mike Chambers&#8217; Blog</a> and a corresponding post on the <a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html">Flex Team&#8217;s Blog</a>. </p>
<div id="attachment_901" class="wp-caption alignnone" style="width: 310px"><a href="http://dispatchevent.org/wp-content/uploads/2011/11/cute_bunny.jpeg"><img src="http://dispatchevent.org/wp-content/uploads/2011/11/cute_bunny-300x207.jpg" alt="" title="cute_bunny" width="300" height="207" class="size-medium wp-image-901" /></a><p class="wp-caption-text">Don&#039;t panic! Take a deep breath and look at this cute bunny</p></div>
<p><span id="more-900"></span></p>
<h2>Not much has changed with the Flash Platform</h2>
<p>If you read closely, not that much has really changed. The problem is perception. Let&#8217;s review what is going away and why it&#8217;s not as crazy as it might sound. </p>
<h3>Mobile Flash Player</h3>
<p>Adobe is discontinuing work on the mobile Flash Player. I don&#8217;t know the numbers of people building Flash content for Android but I suspect it&#8217;s not incredibly high. I would also wager that even Air on Android/iOS is still far from critical mass, but Adobe say they will continue to support this. The desktop Flash Player will stay the same and for the foreseeable future continue to surpass HTML5 in features and cross-platform functionality. </p>
<p>Another way of saying this is that the Flash Platform remains the best choice for the tasks that it was already the best choice for. Mobile was never one of these and some applications, like video players, may have lost that title to HTML5. But in cross-platform, rich-media, deeply interactive experiences on the web, Flash is still ahead of the competition.  </p>
<h3>Flex is still here</h3>
<p>Adobe is discontinuing its support for the Flex SDK. However, it will stay around as <a href="http://spoon.as">an open source project</a> (it was already open source.) It may never get better than it is already, which so far has been good enough to become the platform of choice for many Flex developers.  </p>
<p>Flex cannot get any worse than the next version 4.6, which you were probably looking forward to until today. And you know what, that&#8217;s okay. We don&#8217;t need to be so obsessed with the next thing that we change careers because the <em>next</em> next thing has an uncertain future. I happen to know of some projects that are still using Flex 3 and will probably never upgrade. Why? The user doesn&#8217;t know the difference between <code>mx</code> and <code>spark</code> skins. </p>
<p>It may also get better after being untethered from Adobe and in hands of the Flex Community. In other words, we&#8217;re in charge now. The <a href="http://www.spoon.as/core-values/">Spoon</a> community, who is inheriting the Flex project, already have plans to make a version 5.x.</p>
<h2>Fear itself</h2>
<p>The real issue now is the way the public will preceive this news. This announcement has sapped the confidence of a lot of people, customers and developers alike. In my opinion, it&#8217;s not the time for us to decry Adobe as evil jerks. It is a time for us as experts to try to help our clients, companies and the public to make sense of the news. It&#8217;s time to remember that Flash is just a tool in the arsenal of an interactive developer. In fact, Flash&#8217;s popularity, due to <a href="http://www.apple.com/hotnews/thoughts-on-flash/">largely political reasons</a>, has already been on the decline for a while now. But, it will certainly be dead if the Flash users themselves don&#8217;t believe in it. </p>
<p>The next time a client wants an awesome, interactive video, 3D puzzle game, website thing I will still recommend Flash. I don&#8217;t want to have him tell me &#8220;it has to be HTML5&#8243; because he read online that &#8220;Flash is dead.&#8221; In fact, I think it&#8217;s our job to talk about its strengths and its weaknesses in a totally objective way. We should all dwell in the middle ground between Adobe zealotry and jumping on the next bandwagon. </p>
<h3>Your next job</h3>
<p>I feel hopeful that the shit will not hit the fan, at least not immediately. That being said, I am always an advocate of looking at other technologies and keeping those abstract coding skills honed. Good developers are in a prime position to port our skills to whatever platform comes next, and those skills are almost always in demand. Even HTML5 (JavaScript) apps share a very similar language with AS3 (really AS1). I was able to pick up JQuery and build my first HTML5 project in a matter of a day or two. </p>
<p>As Mike Chamber&#8217;s writes:<br />
<block>&#8220;I think it is a HUGE opportunity for the Flash community. As browser support for richer content and motion graphics improves, so will demand for designers and developers who have experience working with motion graphics on the web. The Flash community has been doing this type of work on the web for over a decade and is uniquely qualified to fill demand for similar work in the browser. I donâ€™t think it is a coincidence that some of the most cutting edge motion graphics work being done in HTML5 today is being done by developers and agencies with extensive experience in Flash (such as Grant Skinner, Branden Hall, Big Spaceship, etcâ€¦).&#8221;</block></p>
<p>Joel Hooks adds some great notes on this in <a href="http://thoughts.joelhooks.com/post/12680058831/you-are-not-your-platform-here-are-some-things-you#/">his blog post</a>. I&#8217;d like to also add <a href="http://haxe.org/">HAXE</a>, Java, C# and <a href="http://www.dartlang.org/">Dart</a> to the list of languages that you should be able to pick up with little effort. </p>
<h3>The Community</h3>
<p>In LA, our local Flex group shut down abruptly after this news was released. I personally feel this was very hasty indeed and wrote a letter about it upon which this blog post was based. I see that a lot of people are really pissed and their identities are in question. If you&#8217;re in this position, I would suggest instead of jumping ship, why not continue to talk about how this will impact our jobs and what skills we can port to other platforms. If there really are people out there who are going to lose their jobs over this, and I think it&#8217;s too soon to say, we should still be able to support each other as a community. </p>
<p>Even with all this positivity, I still have to agree with <a href="http://twitter.com/#!/neurofuzzy/status/135442238607081472">@neurofuzzy</a> &#8220;Anyone who has &#8216;Flash&#8217; in your job title, scratch it out and write &#8216;Interactive.&#8217;&#8221; It&#8217;s something we should have all done a long time ago because I believe we are more than just Flash dudes. </p>
<p><em>I&#8217;d love to hear your thoughts on all of this. Please leave comments. It will be very interesting to look back on this post in 6 months and see whether I was right to keep a cool head or being terribly naÃ¯ve.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/mims/dont-panic/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Fast Intro to Flash</title>
		<link>http://dispatchevent.org/calebjohnston/fast-intro-to-flash/</link>
		<comments>http://dispatchevent.org/calebjohnston/fast-intro-to-flash/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 04:07:42 +0000</pubDate>
		<dc:creator>Caleb Johnston</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=620</guid>
		<description><![CDATA[There is plenty of documentation, tutorials and explanation of Flash on the internet, blogs and books. However, it&#8217;s hard for me to find a good, concise article that covers Flash well. I&#8217;ve been exposing Flash 9 to a friend of mine recently and I&#8217;ve decided that a concise explanation is something I should write. This [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Arial;">There is plenty of documentation, tutorials and explanation of Flash on the internet, blogs and books. However, it&#8217;s hard for me to find a good, concise article that covers Flash well. I&#8217;ve been exposing Flash 9 to a friend of mine recently and I&#8217;ve decided that a concise explanation is something I should write. This post will be brief, high level and will cover Flash as a platform and not the Flash IDE. This article is also intended for those with previous exposure to technical concepts such as virtual machines and compilers.<br style="font-family: Arial;" /> </span><span id="more-620"></span><br style="font-family: Arial;" /><strong><span style="font-family: Arial;">Overview</span></strong><br />
<span style="font-family: Arial;">Flash is a platform for building and deploying interactive multimedia on the internet. The term Flash is ambiguous because it can be used to describe the runtime environment (Flash Player) or one of two IDEs targeting the player (Adobe Flash and Adobe Flex Builder). Flash currently uses an ECMA-based scripting language known as Actionscript for authoring. This same language is used across all of Adobe&#8217;s platform -which includes Adobe AIR, Adobe Flex, and Adobe Flash. Actionscript uses a <em>strong, static, safe</em> type system which makes it&#8217;s syntax more similar to Java than Javascript.</span></p>
<p><strong><span style="font-family: Arial;">Runtime Environment</span></strong></p>
<p><span style="font-family: Arial;"><strong>SWF Files</strong></span><br style="font-family: Arial;" /><span style="font-family: Arial;">Swf files are compressed, multipurpose </span><span style="font-family: Arial;">packages designed to contain the following data: raster and vector graphics, video, audio, text, fonts, animation, and actionscript code. Swfs can be loaded at runtime whenever necessary and can use both static and dynamic linking based upon the compiler settings. The runtime environment uses security sandboxes for loaded swf files. The security settings primarily limit the extent of filesystem access and cross-domain access that swf files can use. Adobe has <a id="jj8r" title="provided the swf file format spec" href="http://www.adobe.com/devnet/swf/">provided the swf file format spec</a> and has recently provided the <a id="k0w6" title="FLV video format spec" href="http://www.adobe.com/devnet/flv/">FLV video format spec</a> and <a id="drt9" title="has declared that they will provide the RTMP specs" href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200901/012009RTMP.html">has declared that they will provide the RTMP spec</a> as well.</span><br />
<span style="font-family: Arial;"><strong><br />
Flash Player &amp; AVM2</strong><br />
The Flash Player runtime is a very light-weight, virtual machine and handles system calls. The Flash Player includes both AVM1 (AS1, AS2, for Flash versions 1-8) and AVM2  (AS3 for Flash 9,10+) which processes compiled <a id="obh5" title="Adobe Byte Code" href="http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html">Adobe Bytecode</a> (ABC). The term AVM stands for &#8220;ActionScript Virtual Machine&#8221;<strong>*</strong>. </span><span style="font-family: Arial;">The Flash Player uses a Deferred Reference Counting (DRC) mechanism combined with a conservative mark/sweep garbage collector.</span><span style="font-family: Arial;"> The Adobe VM uses both JIT compiling and code interpretation and may benefit from compile-time bytecode optimizations based upon compiler input parameters. AS3 computational performance is generally closer to Java than Javascript [<a id="zbpr" title="AS3 performance vs Java vs Javascript" href="http://www.oddhammer.com/actionscriptperformance/set4/">source</a>]. The player also maintains a variable framerate that reflects the time consumed for each frame update [<a id="w455" title="source" href="http://www.onflex.org/ted/2005/07/flash-player-mental-model-elastic.php">source</a>]. Each frame update consists of multiple stages that include internal player processing, rendering, and author script processing. The program framerate is the principle metric reflecting application performance.<br />
<span style="font-family: Arial;"><br style="font-family: Arial;" /></span><span style="font-size: small;"><strong><span style="font-family: Arial;">Development Environment</span></strong></span></span></p>
<p><strong><span style="font-family: Arial;">Actionscript API</span></strong><br style="font-family: Arial;" /> <span style="font-family: Arial;">The Actionscript API is divided up amongst the Adobe AIR environment, the Flex environment, and the Flash environment and the Flash Player</span><span style="font-family: Arial;">.</span><span style="font-family: Arial;"> The source for all the packages are divided up amongst <a id="lc9l" title="swc files" href="http://livedocs.adobe.com/flex/3/html/building_overview_5.html">swc files</a>. Swc files are pre-compiled catalogs of classes and assets. They are similar to swf files but they are used for compile-time dependency resolution. Furthermore, the native swc&#8217;s predominantly contain code and not visual assets. An overview of the Actionscript packages is kept up to date in the <a id="y1w4" title="Adobe Actionscript 3 package summary" href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/package-summary.html">Adobe Live Docs</a>.</span></p>
<p><span style="font-family: Arial;"><strong>The Flash IDE</strong><br />
The Flash IDE was designed for designers, artists and animators. So, it is equiped with a layer system which reflects the stage display list and a hierarchical timeline which reflects the temporal nature of the runtime. The objects placed on the stage are represented by the timeline and can be &#8220;tweened&#8221; (using runtime interpolated 2D geometric transformations or custom shape morphs). The same timeline is also used for object creation and destruction. All stage instances are confined to a small set of native data types including: MovieClips, Sprites, Shapes, <span style="font-family: Arial;">TextFields, </span><span style="font-family: Arial;">Videos, and Bitmaps. The IDE also has a library that contains source objects for all stage instances and even instances that aren&#8217;t used on the stage. Flash projects often have several build targets (compiled swf files) that use parts of the project codebase. After Macromedia was purchased by Adobe, the Flash authoring environment has been updated to provide much better interoperability with the Adobe Creative Suite.</span></span></p>
<p><span style="font-family: Arial;"><strong>Adobe Flex Builder</strong><br />
Flex Builder is an Eclipse-based Actionscript IDE for writing and compiling swf files. Flex Builder is primarily designed to build &#8220;Flex&#8221; projects which can be written in an interface tagging language known as MXML. MXML is a declarative XML langauge used to define interface elements in a project. MXML files provide the &#8220;view&#8221; in the MVC software design pattern. Flex Builder also provides plenty of useful features like code completion, syntax formatting, active debugging, memory profiling, and project building that expose errors and warnings during development time. Because the Flex framework is not bundled with the Flash Player, Flex projects must statically link to all swc assets specific to Flex which amounts to greater than 500kb. This is very unnatractive for most users, thus Adobe has provided <a id="ilsr" title="means by which the download can be significantly decreased" href="http://onflash.org/ted/2008/01/flex-3-framework-caching.php">means by which the download can be significantly decreased</a>. Flex Builder is also used to deploy applications for the <a id="kwwz" title="Adobe AIR platform" href="http://en.wikipedia.org/wiki/Adobe_Integrated_Runtime">Adobe AIR platform</a>. Adobe AIR is a desktop runtime that combines <a id="ffsj" title="webkit" href="http://webkit.org/">webkit</a> with the AVM2 portion of the Flash Player. AIR can be likened to a closed sourceÂ <a id="k10e" title="Java SE" href="http://en.wikipedia.org/wiki/Java_SE">Java SE</a> runtime but provides a smaller learning curve and greater accessibility than what comes with the Java ecosystem. </span></p>
<p><span style="font-family: Arial;"><strong>Compiler</strong><br />
Since Adobe has launched the Flex platform they have provided free access to their Flex and Actionscript compiler and SDK. They have also provided open source projects under the <a id="mz0t" title="Mozilla public license" href="http://en.wikipedia.org/wiki/Mozilla_Public_License">Mozilla public license</a>. The compiler (<a id="n5hv" title="Adobe Flex 3 Help - Compilers" href="http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_13.html">mxmlc</a>) provides an impressive amount of flexibility and customization for swf compiling. It can be configured with command line options or a <a id="xwm0" title="configuration XML file" href="http://livedocs.adobe.com/flex/3/html/compilers_11.html#134938">configuration XML file</a>.</span></p>
<p><span style="font-family: Arial;"><em><strong>* </strong>correction 09-12-2009, I had previously stated that the term AVM meant &#8220;Adobe Virtual Machine&#8221;, this is a mixup. It actually means &#8220;ActionScript Virtual Machine&#8221;. Thanks dbam.</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/calebjohnston/fast-intro-to-flash/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>In the age of AIR has Zinc zunk?</title>
		<link>http://dispatchevent.org/mims/zinc-vs-ai/</link>
		<comments>http://dispatchevent.org/mims/zinc-vs-ai/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 23:59:18 +0000</pubDate>
		<dc:creator>Mims H Wright</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Discussion]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=492</guid>
		<description><![CDATA[I recently spotted an ad on a website for Zinc (a tool for creating standalone software from Flash content) and was actually kind of surprised to see that they were still around since the release of AIR which does essentially the same things and works with existing software (Zinc&#8217;s price tag is $849.99). I was [...]]]></description>
			<content:encoded><![CDATA[<p>I recently spotted an ad on a website for <a href="http://www.multidmedia.com/software/zinc/">Zinc</a> (a tool for creating standalone software from Flash content) and was actually kind of surprised to see that they were still around since the release of AIR which does essentially the same things and works with existing software (Zinc&#8217;s price tag is<a href="http://www.multidmedia.com/software/zinc/devsuite/"> $849.99</a>). I was actually hoping that their site would offer some explanation about why we should use Zinc instead of AIR. Unfortunately, the only thing I could find was a <a href="http://www.multidmedia.com/support/articles/?action=detail&amp;id=33">comparisson to the Apollo Alpha</a>!</p>
<p>In the spirit of playing fair, I&#8217;d love to hear about your experiences with Zinc &#8211; good, bad, or obselete.</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/mims/zinc-vs-ai/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Double Dissapointment</title>
		<link>http://dispatchevent.org/calebjohnston/double-dissapointment/</link>
		<comments>http://dispatchevent.org/calebjohnston/double-dissapointment/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 00:22:59 +0000</pubDate>
		<dc:creator>Caleb Johnston</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Discussion]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Videogames]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=319</guid>
		<description><![CDATA[ECMA script 4 (or 3.1) and OpenGL 3. I may be in the (rare?) position of being highly interested in two disparate technologies. The first being an online scripting language standard governed by ECMA (used in Javascript &#38; Actionscript). The second, an open standard for real-time rendering governed by the Khronos Group (OpenGL). In recent [...]]]></description>
			<content:encoded><![CDATA[<p><a title="ES 3.1 harmony" href="http://ejohn.org/blog/ecmascript-harmony/">ECMA script 4 (or 3.1)</a> and <a title="OpenGL 3 spec" href="http://www.tojiart.com/OpenGL/">OpenGL 3</a>.</p>
<p>I may be in the (rare?) position of being highly interested in two disparate technologies. The first being an online scripting language standard governed by <a title="ECMA international standards organization" href="http://www.ecma-international.org/">ECMA</a> (used in Javascript &amp; Actionscript). The second, an open standard for real-time rendering governed by the <a title="Khronos group" href="http://www.khronos.org/">Khronos Group</a> (<a title="OpenGL" href="http://en.wikipedia.org/wiki/OpenGL">OpenGL</a>). In recent days these two languages have faced most unfortunate developments. First the ECMA script 4&#8230;</p>
<p><span id="more-319"></span></p>
<p>On Nov 7, 2006 Adobe announced the <a title="Emmy Huang on Tamarin" href="http://www.adobe.com/devnet/logged_in/ehuang_tamarin.html">contribution of their ECMA scripting engine to the open source community</a> under the name &#8220;Tamarin&#8221;. <a title="Tamarin project home" href="http://www.mozilla.org/projects/tamarin/">Tamarin</a> is also being used as the JS scripting engine for Mozilla Firefox under the name &#8220;<a title="SpiderMonkey project home" href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a>&#8220;. It seemed like a good idea at the time of release. But now look at the situation: we have AVM2, directly connected to Firefox AND the ECMA committee &#8211;slowing the progress of Actionscript and the Flash Player (and the internet for that matter). Needless to say, this is a disappointment. But it doesn&#8217;t end there&#8230;</p>
<p>Though having plenty of contributors, the realm of real-time rendering is primarily controlled by Microsoft, Nvida, ATI/AMD, Apple, and (more recently) Intel. Microsoft hasn&#8217;t really contributed to the Khronos Group because long ago they decided to pursue their own 3D graphics rendering API known as Direct3D. The evolution of OpenGL has become painfully slow while <a title="DirectX API" href="http://en.wikipedia.org/wiki/DirectX">DirectX</a> and <a title="D3D API" href="http://en.wikipedia.org/wiki/Direct3D">Direct3D</a> are becoming the (de-facto) standard. Finally, the Khronos group promised to improve the long lost API by introducing an object-oriented structure in stark contrast to its current state machine model. That was in October 2007. Last week the specification was finally unveiled and it remains largely the same. Not only is this a big let down, but it will definitely damage all future 3D software and game development releases for non-Windows platforms (including future consoles). Very unfortunate.</p>
<h5>DISCLAIMER: Both of these developments are FAR more complex than what this post outlines -and there&#8217;s justification behind both developments. But on the whole, they both seem bad for everybody (or just me?).</h5>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/calebjohnston/double-dissapointment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actionscript 3 performance tuning review</title>
		<link>http://dispatchevent.org/calebjohnston/as3-performance-tuning/</link>
		<comments>http://dispatchevent.org/calebjohnston/as3-performance-tuning/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 16:34:47 +0000</pubDate>
		<dc:creator>Caleb Johnston</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=285</guid>
		<description><![CDATA[After late-night conversations amongst coworkers and friends over beers, I&#8217;ve discovered that many flash developers remain unfamiliar with AVM2&#8242;s inter workings. A while ago, I found a couple documents which have benefited me greatly in understanding AVM2 and AS3: Actionscript 3.0 and Performance Tuning AVM2 Overview There are definitely some big take-aways in these two [...]]]></description>
			<content:encoded><![CDATA[<p>After late-night conversations amongst coworkers and friends over beers, I&#8217;ve discovered that many flash developers remain unfamiliar with AVM2&#8242;s inter workings. A while ago, I found a couple documents which have benefited me greatly in understanding AVM2 and AS3:</p>
<p><a href="http://www.onflex.org/ACDS/AS3TuningInsideAVM2JIT.pdf">Actionscript 3.0 and Performance Tuning</a></p>
<p><a href="http://www.adobe.com/devnet/actionscript/articles/avm2overview.pdf">AVM2 Overview</a></p>
<p>There are definitely some big take-aways in these two documents. I would list them here, but then you might not read them for yourself! ;)</p>
<p>The first document is 74 powerpoint slides (prepared by Gary Grossman of Adobe) which is very useful for getting a quick understanding of AVM2 topics such as garbage collection, the benefits of strong typing, the Actionscript byte code (abc) format, the code interpreter and JIT compilation. For an AS3 developer this is a must-read.</p>
<p>The second document is a bit more dense. It contains 108 pages of more formally described underpinnings of the virtual machine. It focuses a lot on how your AS3 code will ultimately be run as processor instructions. Its a great follow-up to the first document. If you&#8217;re a geek, I would highly recommend reading this overview.</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/calebjohnston/as3-performance-tuning/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tweening timeline animations with KitchenSync</title>
		<link>http://dispatchevent.org/mims/tweening-timeline-animations-with-kitchensync/</link>
		<comments>http://dispatchevent.org/mims/tweening-timeline-animations-with-kitchensync/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 23:31:33 +0000</pubDate>
		<dc:creator>Mims H Wright</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[physics & motion]]></category>
		<category><![CDATA[Site-seeing]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Videogames]]></category>
		<category><![CDATA[KitchenSync]]></category>

		<guid isPermaLink="false">http://dispatchevent.org/?p=284</guid>
		<description><![CDATA[One of the new features in KitchenSync 1.5 is the ability to tween animations on a MovieClip&#8217;s timeline&#8230; and I&#8217;m not just talking about gotoAndPlay(), I&#8217;m talking about controlling the starting and stopping points, speed, and easing functions of an animation on the timeline with code. It does this by incrementally controlling the current frame [...]]]></description>
			<content:encoded><![CDATA[<p>One of the new features in <a href="http://dispatchevent.org/mims/kitchensync-v1-5/">KitchenSync 1.5</a> is the ability to tween animations on a MovieClip&#8217;s timeline&#8230; and I&#8217;m not just talking about gotoAndPlay(), I&#8217;m talking about controlling the starting and stopping points, speed, and easing functions of an animation on the timeline with code. It does this by incrementally controlling the current frame number of the MovieClip using a <a href="http://as3lib.org/kitchensync/docs/api/org/as3lib/kitchensync/action/KSTween.html">KSTween</a> and a special <a href="http://as3lib.org/kitchensync/docs/api/org/as3lib/kitchensync/action/tweentarget/ITweenTarget.html">ITweenTarget</a> (a class used to control the values of an object) called <a href="http://as3lib.org/kitchensync/docs/api/org/as3lib/kitchensync/action/tweentarget/TimelineController.html"><strong>TimelineController</strong></a>.</p>
<p>Take this FLA animation.</p>
<p><a href="http://dispatchevent.org/wp-content/uploads/2008/07/timelineAnimationStill.png"><img src="http://dispatchevent.org/wp-content/uploads/2008/07/timelineAnimationStill.png" alt="MovieClip animation" /></a></p>
<p>As you can see, there is a simple animation using a guide layer and labels on the key frames.</p>
<p><span id="more-284"></span></p>
<p>The following SWF uses KitchenSync to control the same ball animation. As you can see, the duration and easing functions of the animation can be controlled. You can even animate backwards!</p>
<p><a href="/wp-content/uploads/2008/07/FlashIntegrationTest.swf">See it in action.</a></p>
<p>The source that controls this is here.</p>
<pre lang="actionscript3">package {
	import flash.display.MovieClip;

	import org.as3lib.kitchensync.KitchenSync;
	import org.as3lib.kitchensync.action.*;
	import org.as3lib.kitchensync.action.tweentarget.*;
	import org.as3lib.kitchensync.easing.Bounce;
	import org.as3lib.kitchensync.easing.Cubic;
	import org.as3lib.kitchensync.easing.Linear;
	import org.as3lib.kitchensync.easing.Oscillate;

	/**
	*	Demos the TimelineController which controls the animation of a MovieClip's timeline.
	*/
	public class FlashIntegrationTest extends MovieClip
	{
		protected var test1:MovieClip;

		public function FlashIntegrationTest()
		{
			super();
			// initialize kitchensync.
			KitchenSync.initialize(this, "1.5");

			// add a movieclip from the library
			test1 = MovieClip(new AnimationTest1());
			addChild(test1);

			// define the start and end frame with strings or ints or FrameLabel's
			var startLabel:* = "start";
			var endLabel:* = "end";

			// set up the TimelineController tween target.
			var tweenTarget:TimelineController = new TimelineController(test1, startLabel, endLabel);
			// Animate the ball with a linear ease.
			var tween:KSTween = KSTween.newWithTweenTarget(tweenTarget, "1s", 0, Linear.ease);

			// animate the ball backwards with a bounce tween
			var tween2:KSTween = tween.cloneReversed();
			tween2.duration = "4s";
			tween2.easingFunction = Bounce.easeOut;
			tween2.addTrigger(tween);

			// animate the ball with an oscillator
			var tween3:KSTween = KSTween.newWithTweenTarget(tweenTarget, "10m", "1s", Oscillate.sine);
			tween3.easingMod1 = 0.3;
			tween3.addTrigger(tween2);

			// start the animations
			tween.start();
		}

	}
}</pre>
<p>Pretty cool huh? We&#8217;re creating a new TimelineController and setting the boundaries of the animation then passing it to a new KSTween object. Each of the three tweens use different parameters and are triggered by the end of the one before it.</p>
<p>You can <a href="http://dispatchevent.org/wp-content/uploads/2008/07/timelineControllerDemo.zip">download the entire thing</a> and play around with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/mims/tweening-timeline-animations-with-kitchensync/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Pimp my &#8216;clipse &#8211; a list of must-have Eclipse plug-ins for Flex/Flash Development</title>
		<link>http://dispatchevent.org/mims/pimp-my-clipse-a-list-of-must-have-eclipse-plug-ins-for-flexflash-development/</link>
		<comments>http://dispatchevent.org/mims/pimp-my-clipse-a-list-of-must-have-eclipse-plug-ins-for-flexflash-development/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 16:00:18 +0000</pubDate>
		<dc:creator>Mims H Wright</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips, Tricks, and Hacks]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://mimswright.com/blog/?p=216</guid>
		<description><![CDATA[FlexBuilder may have its ups and downs but it still remains my pick for best AS3/MXML editor on the market (with TextMate not far behind). Part of the beauty of FlexBuilder is that it&#8217;s built on the Eclipse SDK, one of the most versatile and powerful IDEs available, which is not only free and open [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://dispatchevent.org/wp-content/uploads/2007/12/eclipserims.png' alt='Eclipse Rims' /></p>
<p>FlexBuilder may have its ups and downs but it still remains my pick for best AS3/MXML editor on the market (with <a href="http://macromates.com/">TextMate</a> not far behind). Part of the beauty of FlexBuilder is that it&#8217;s built on the <a href="http://www.eclipse.org/">Eclipse SDK</a>, one of the most versatile and powerful IDEs available, which is not only free and open source, but boasts <a href="http://www.eclipseplugincentral.com/">a wealth of third party plug-ins</a> for every kind of (mostly Java) development. This article will take a look at some must-have plug-ins for doing Flex development as well as some tips for tricking out your development process.</p>
<p>As with all of our entries, your feedback, suggestions, corrections and additions are all more than welcome.</p>
<p><span id="more-216"></span></p>
<p class="disclaimer">Disclaimer: This article applies to the Flex Builder Eclipse Plug-in version, not the standalone version. If you&#8217;re using the standalone version and would like to try these plugins out, I recommend installing the plug-in version. It&#8217;s a little harder to use but I think it&#8217;s more rewarding in the end. Also, this tutorial was written on the Mac version with Eclipse 3.3 and Flex Builder 3 beta 2 so your experience may vary slightly if you&#8217;re using Windows or something else. Furthermore, I am not responsible for any damages or loss of data or anything else that happens as a result of you following the advice in this article &#8211; nothing should go wrong however many plug-ins are buggy and may cause eclipse to perform poorly or crash.</p>
<h3>Installing FlexBuilder Eclipse Plug-in</h3>
<p>To install the FlexBuilder Eclipse Plug-in version you will probably want to first uninstall the FlexBuilder Standalone. You will also need to download and install Eclipse. <strong>Important:</strong> Eclipse is currently in version 3.3.1.1 at the time of writing. If you&#8217;re using FlexBuilder 3, good for you! <a href="http://www.eclipse.org/downloads/download.php?file=//eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-SDK-3.3.1.1-macosx-carbon.tar.gz">Go and download the latest version</a> (get the classic distro). However, FlexBuilder 2 does not work on Eclipse 3.3. You&#8217;ll need to download the older version 3.1 or 3.2 of the SDK which are hidden <a href="http://archive.eclipse.org/eclipse/downloads/index.php">deep in the dungeons of the Eclipse Project site</a>.</p>
<p>After Eclipse is installed you can proceed with the installation of the FlexBuilder plug-in. Additional installation instructions can be found on <a href="http://labs.adobe.com/wiki/index.php/Flex_3:Release_Notes#Installation_Instructions">the Adobe Site</a>.</p>
<h3>Installing Plug-ins</h3>
<p>If you take a look at the <a href="http://www.eclipseplugincentral.com/">Eclipse plugin central</a> you&#8217;re liable to notice two things right off the bat. First, there are a ridiculous number of plugins especially for really obscure branches of Java development. Second, the Eclipse site is completely ugly and it&#8217;s often incredibly frustrating to use. I&#8217;ll try to help you get to the juicy bits quickly.</p>
<p>By far the best way to install Eclipse plug-ins is to use <em>update sites</em>. Update sites allow you to select and download plug-in packages directly from the developer from within the Eclipse program. The update site URLs are notoriously difficult to find due to the Eclipse site&#8217;s confusing navigation. For example, I jut tried to get to the update site URL for Europa, a major Eclipse supported plugin, and it took about 4 minutes worth of clicking for me to find it (at best it takes 3 clicks). These elusive links to update sites should, in my opinion, be in big red letters on the front of every project page so in case Eclipse is reading this right now, WTF doodz!?</p>
<p>Once you have the update site URL take the following steps to search the site for updates:</p>
<ol>
<li>Go into eclipse and click on <strong>Help > Software Updates > Find and Install&#8230;</strong> (Help menu? Again, WTF)</li>
<li>Select <strong>Search for new features to install</strong></li>
<li>Click the <strong>next ></strong> button</li>
<li>Click on the <strong>New remote site&#8230;</strong> button</li>
<li>Give the update site a label and paste the update site url. Click ok</li>
<li>Make sure the site you added (and any other sites you want to update) are checked and click the <strong>Finish</strong> button</li>
<li>On the next screen you&#8217;ll see you can choose which features of the plugin you would like to install. For most plugins, you&#8217;ll probably want all of them so check the root folder. <strong>Note:</strong> you may see an error at the top of the window such as <em>FooBar v.0.7 requires plug-in &#8216;org.eclipse.foobar.core&#8217;.</em> If this happens, it can usually be fixed by clicking on the <strong>Select Required</strong> button which will automatically select the required features.</li>
<li>When you&#8217;re done selecting features, click <strong>Next ></strong></li>
<li><strong>ALWAYS CAREFULLY READ EVERY LINE OF THE EULA!</strong> then click <strong>I accept the terms of the license agreements</strong> and click <strong>Next ></strong></li>
<li>Click the <strong>Finish</strong> button. You may be asked again about certain features during installation for which you can click <strong>Install All</strong> to keep going</li>
<li>When the installation is done, restart the Eclipse SDK</li>
</ol>
<p>That&#8217;s it in just 11 tedious steps!</p>
<p>To get updates of already installed plugins choose <strong>Search for updates of the currently installed features</strong> at step 2 and follow the instructions above. If you install a plugin that conflicts with your setup or if you want to temporarily disable or uninstall a plugin, you can always go to <strong>Help > Software Updates > Manage Configuration&#8230;</strong> to manage your environment. Keep in mind that most plugins add new items to <strong>Eclipse preferences</strong>, the <strong>Window > Open Perspective</strong> dialog, the <strong>Window > Show View</strong> dialog or the <strong>File > New</strong> dialog.</p>
<h4>A note about simultaneous releases &#8211; <a href="http://www.eclipse.org/projects/europa.php">Europa</a>, <a href="http://www.eclipse.org/projects/ganymede.php">Ganymede</a>, and <a href="http://www.eclipse.org/projects/callisto.php">Callisto</a></h4>
<p>In 2006 the Eclipse Foundation decided to take ten of the most used plug-ins and wrap them into one release so that the plug-ins would update at the same time as the Eclipse SDK. This project was called Callisto. They considered it a great success so they did it again in 2007 and (confusingly) called it Europa. 2008&#8242;s project is called Ganymede.</p>
<p>Some of the plug-ins listed below are part of the Europa project (currently, the latest full version release). To install these plugins you will want to check the Europa update site which contains several projects but you should select only the ones you want to install.</p>
<h3>Must-have Plug-ins</h3>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Web Tools Platform (WTP)</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.eclipse.org/webtools/">http://www.eclipse.org/webtools/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://download.eclipse.org/releases/europa/site.xml</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>If you work with Flex or Flash, chances are you&#8217;re making a website. This project provides tools for editing the standard web formats like XHTML.</p>
<p>Mylyn is part of the <a href="http://www.eclipse.org/projects/europa.php">Europa</a> simultaneous release.</p>
</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Mylyn</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.eclipse.org/mylyn/">http://www.eclipse.org/mylyn/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://download.eclipse.org/releases/europa/site.xml</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>Mylyn lets you code using the concept of task-oriented development. It is built to help you focus on a single task by obscuring unused classes and hooking in with most of the commonly used bug-tracking tools. Especially cool if you use a program like TRAC.</p>
<p>Mylyn is part of the <a href="http://www.eclipse.org/projects/europa.php">Europa</a> simultaneous release.</p>
</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>CVS &amp; ANT</td>
</tr>
<tr>
<th>Website</th>
<td>N/A</td>
</tr>
<tr>
<th>Update Site</th>
<td>N/A</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>Technically, not a plugin. CVS support and ANT support are built into the latest version of Eclipse so you won&#8217;t need to install these separately. However, they function like plugins and they are very useful so I think they deserve a mention here.</p>
<p>CVS support allows you to manage <a href="http://www.nongnu.org/cvs/">CVS</a> (Concurrent Versioning System) Repositories and make checkouts and changes from within Eclipse. Personally I prefer SVN for versioning (see also <a href="#subclipse">Subclipse</a>) but sometimes it&#8217;s not up to me and this functionality is quite useful.</p>
<p><a href="http://ant.apache.org/">ANT</a> is a tool you can use to create build scripts for your Flex project or for any other language. This is a must-have for larger projects with complicated deploy folders. More info on using ANT and Flex can be found at <a href="http://labs.adobe.com/wiki/index.php/Flex_Ant_Tasks">Adobe Labs</a> and in the <a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=00000368.html">Flex 2 docs</a>.</p>
</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Snippets</td>
</tr>
<tr>
<th>Website</th>
<td>N/A</td>
</tr>
<tr>
<th>Update Site</th>
<td>N/A</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>OK. To be honest, I&#8217;m not sure how you install this one. I think it&#8217;s automatically installed as part of the <a href="http://www.eclipse.org/webtools/">Web Tools Project</a> (WTP) or maybe <a href="http://www.eclipse.org/pdt/">PHP Development Tools</a> (PDT) also mentioned in this post. Either way, once it&#8217;s installed you can access it through the Window > Show View menu item.</p>
<p>Snippets lets you define code templates that let you add big chunks of code to a class with a few clicks. You can define variables that appear in the code as well. For example, you may create a snippet that creates a private variable and a public getter and setter and only pass in the variable name and the type. Pretty useful, but not as good as <a href="http://macromates.com/">TextMate</a>.</p>
</td>
</tr>
</table>
<p><a name="subclipse"></a></p>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Subclipse</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://subclipse.tigris.org/">http://subclipse.tigris.org/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://subclipse.tigris.org/update_1.2.x</td>
</tr>
<tr>
<th>Description</th>
<td>A plugin that lets you manage a list of Subversion (SVN) repositories, check out directly from the list, and update, commit, etc. the files in the repository straight from your navigation view in Eclipse. So basically like <a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a> for Eclipse.</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>TODO / FIXME Task Plugin</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.richinternet.de/blog/index.cfm?entry=911D4B57-0F0D-5A73-AF6F4D4D04099757">http://www.richinternet.de/blog/index.cfm?entry=911D4B57-0F0D-5A73-AF6F4D4D04099757</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>N/A &#8211; see website</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>This is a simple little tool that tracks all of your TODO or FIXME comments in Eclipse&#8217;s Tasks view. There&#8217;s no update site so you&#8217;ll have to follow the instructions on the webpage.</p>
</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>JSEclipse</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://labs.adobe.com/technologies/jseclipse/">http://labs.adobe.com/technologies/jseclipse/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://download.macromedia.com/pub/labs/jseclipse/autoinstall</td>
</tr>
<tr>
<th>Description</th>
<td>Adobe&#8217;s official JavaScript plugin for Eclipse with support for FlexBuilder, popular JS frameworks, and JavaDoc.</td>
</tr>
</table>
<p><!-- ********************** --></p>
<h3>Notable Mention</h3>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Eclipse Regular Expression Tester</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.brosinski.com/regex/">http://www.brosinski.com/regex/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://brosinski.com/regex/update</td>
</tr>
<tr>
<th>Description</th>
<td>This is a tool that will help you visualize Regular Expressions which can be very confounding to look at even for people who are experienced with using them.</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Ruby Development Tools (RDT)</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://rubyeclipse.sourceforge.net/">http://rubyeclipse.sourceforge.net/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://updatesite.rubypeople.org/release</td>
</tr>
<tr>
<th>Description</th>
<td>If you develop in Ruby, you&#8217;ll probably want this. Also see PDT below.</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>PHP Development Tools (PDT)</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.eclipse.org/pdt/">http://www.eclipse.org/pdt/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://download.eclipse.org/tools/pdt/updates/</td>
</tr>
<tr>
<th>Description</th>
<td>If you develop in PHP, you&#8217;ll probably want this. Also see RDT above.</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Aptana</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.aptana.com/">http://www.aptana.com/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://update.aptana.com/update/3.2/</td>
</tr>
<tr>
<th>Description</th>
<td>
<p>A full featured IDE for working on web apps. There is also a standalone version. Aptana looks very promising, however, I disabled it since it seemed to be conflicting with other plugins in my Eclipse setup.</p>
<p>Roger kinda likes it though:</p>
<blockquote><p>aptana is great because it is an integrated development environment, unlike a standalone text editor. Its integrated Javascript contextual completion and compatibility matrices are lifesavers. It plays nicely with other eclipse editors and uses a plugin architecture to support not only [X]HTML and Javascript, but also RoR and PHP.</p></blockquote>
</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>FDT 3.0</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://fdt.powerflasher.com/">http://fdt.powerflasher.com/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>N/A</td>
</tr>
<tr>
<th>Description</th>
<td>FDT has a great track record and the Enterprise edition of FDT 3.0 could be the first third-party FlexBuilder competitor worth considering. However, with the price of the package now approaching the nine-hundred dollar mark thanks to our failing currency, this is a fairly high-risk alternative.</td>
</tr>
</table>
<table class="plugin" border="0" cellspacing="0" cellpadding="0">
<tr>
<th>Plugin</th>
<td>Eclipse Monkey (aka project dash)</td>
</tr>
<tr>
<th>Website</th>
<td><a href="http://www.eclipse.org/dash/">http://www.eclipse.org/dash/</a></td>
</tr>
<tr>
<th>Update Site</th>
<td>http://download.eclipse.org/technology/dash/update/</td>
</tr>
<tr>
<th>Description</th>
<td>Allows you to create scripts to automate Eclipse itself using JS. I haven&#8217;t used this but it sounds interesting.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/mims/pimp-my-clipse-a-list-of-must-have-eclipse-plug-ins-for-flexflash-development/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>(Apollo) Air FileSystem Tutorial Part 1 &#8211; File and FileStream</title>
		<link>http://dispatchevent.org/mims/apollo-filesystem-io-api-part-1-file-and-filestream/</link>
		<comments>http://dispatchevent.org/mims/apollo-filesystem-io-api-part-1-file-and-filestream/#comments</comments>
		<pubDate>Sun, 27 May 2007 08:38:25 +0000</pubDate>
		<dc:creator>Mims H Wright</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Conferences and User Groups]]></category>

		<guid isPermaLink="false">http://mimswright.com/blog/?p=163</guid>
		<description><![CDATA[One of the most important new features in Apollo is the ability to access the local file system directly. This provides developers with the ability to read and edit text or html files, save preferences locally, store application states as external files, serialize and de-serialize data and much more. This tutorial will cover the File [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://dispatchevent.org/wp-content/uploads/2007/05/pg12pic.jpg' title='Apollo Trajectory'><img src='http://dispatchevent.org/wp-content/uploads/2007/05/pg12pic.jpg' width="100%" alt='Apollo Trajectory' /></a></p>
<p>One of the most important new features in Apollo is the ability to access the local file system directly. This provides developers with the ability to read and edit text or html files, save preferences locally, store application states as external files, serialize and de-serialize data and much more. This tutorial will cover the File API features in Apollo step-by-step and will serve as a supplement to the talk I recently gave at the  <a href="http://nyflex.or">New York Flex Users Group</a>.</p>
<p>This tutorial will be presented in multiple sections. This first will cover the File and FileStream classes and the subsequent ones will cover the Flex components used for viewing and accessing the file system and serializing and de-serializing data.</p>
<p><span id="more-163"></span></p>
<h2>Sample code</h2>
<p><a href='http://dispatchevent.org/wp-content/uploads/2007/05/filedemomxml.zip' title='FileDemo'>FileDemo.mxml</a></p>
<p>Here is a bit of sample code that walks through several common tasks when working with files. I&#8217;ve marked up the code with lots of comments to highlight what&#8217;s going on in each step. To run it, use this as the ApolloApplicaiton class for an Apollo project. Note: a new folder called &#8216;foo&#8217; will appear on your desktop after running it.</p>
<h2>Disclaimer and Upcoming features</h2>
<p>The code and examples in this tutorial deal with the files stored on your local hard drive. Although none of the code is designed to do so, it may be possible to alter or delete important files with your Apollo application. You will be using this code at your own risk.</p>
<p>It&#8217;s also important to remember that Apollo is currently in an Alpha version and prone to changes including additional features. Here is a list of file system functionality not included in Apollo Alpha but planned for version 1.0 (according to Adobe Labs).</p>
<ul>
<li>Drag and drop support</li>
<li>Copy and paste support</li>
<li>Native file picker dialog boxes</li>
<li>File extension registration</li>
<li>Launching an application to handle a file type</li>
<li>Security model for accessing files</li>
</ul>
<h2>The File class</h2>
<p>A File object is a reference to a file or directory in the local file system. Files and directories both use the same type of object which results in a surprisingly simplified way of accessing data. This is an excellent example of the <a href="http://www.exciton.cs.rice.edu/JAvaResources/DesignPatterns/composite.htm">composite design pattern</a>. You can distinguish files from directories by checking the <code>isDirectory</code> property of a file.</p>
<p>The file object also contains metadata for the file it points to (inherited from the FileReference class) including:</p>
<ul>
<li>name</li>
<li>size</li>
<li>type</li>
<li>creation and modification dates</li>
<li>application that created the file</li>
</ul>
<p>The File class also contains static references to commonly accessed directories in the local file system. These access points are platform independent and should point to the appropriate folder for Mac or Windows systems. (i.e. userDirectory will be c://documents and settings/username for Windows and /Users/username for Mac.) In most cases, you will want to use one of these directories when creating files. These directories include:</p>
<ul>
<li>appStorageDirectory &#8211; Storage directory unique for each app.</li>
<li>appResourceDirectory &#8211; Application&#8217;s install directory</li>
<li>currentDirectory &#8211; Directory from whence the app was launched</li>
<li>desktopDirectory &#8211; The current user&#8217;s desktop directory</li>
<li>documentsDirectory &#8211; The current user&#8217;s documents directory</li>
<li>userDirectory &#8211; The current user&#8217;s home directory</li>
</ul>
<p>File instances contain methods for creating, copying, and deleting files and folders. These actions that could potentially slow the system down because of large file sizes come in two flavours &#8211; synchronous and asynchronous.<br />
Synchronous actions pause all other ActionScript from continuing while they&#8217;re processing. For very large files, the app will appear to freeze up while the processing is going on. Synchronous actions, however, are much simpler to write since they don&#8217;t require event listeners.</p>
<p>Asynchronous actions use the event framework to notify the application when they are finished so that other code may continue to execute while the action is taking place. Most of these methods will fire a Event.COMPLETE event or a IOErrorEvent.IO_ERROR if they are successful or if they fail respectively.<br />
A general rule is if you&#8217;re working with files that are less than 3MB, it&#8217;s probably safe to use the synchronous methods. If there is a chance your file sizes will be larger, or if you want the added robustness, use asynchronous.<br />
Here&#8217;s a list of methods that come in synchronous and asynchronous forms:</p>
<table>
<tr>
<th>Synchronous</th>
<th>Asynchronous</th>
</tr>
<tr>
<td>copyTo()</td>
<td>copyToAsync()</td>
</tr>
<tr>
<td>moveTo()</td>
<td>moveToAsync()</td>
</tr>
<tr>
<td>deleteFile()</td>
<td>deleteFileAsync()</td>
</tr>
<tr>
<td>deleteDirectory()</td>
<td>deleteDirectoryAsync()</td>
</tr>
<tr>
<td>moveToTrash()</td>
<td>moveToTrashAsync()</td>
</tr>
<tr>
<td>listDirectory()</td>
<td>listDirectoryAsync()</td>
</tr>
<tr>
<td>open()</td>
<td>openAsync()</td>
</tr>
</table>
<h2>The FileStream Class</h2>
<p>The File class provides a reference to a class but in order to work with the data inside the file, you&#8217;ll need to use a FileStream object. FileStreams allow you to open a file, specified by a File object. You can choose from four file modes for reading, writing, appending (writing to the end), or editing. To do this, you can use the open() method of the file stream.</p>
<p>Once a file stream is open, you will be able to call one of the many read or write commands to add data or retrieve it. In this case, we&#8217;ll use UTFBytes to write string data.</p>
<p>Use the close() method to close the file once you&#8217;re done writing to it.</p>
<pre><code>
var file:File = File.desktopDirectory.resolve("foo.txt");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes("bar");
stream.close();
</code></pre>
<p></p>
<p>OK. That&#8217;s all for now. Make sure you download the sample code if you haven&#8217;t already &#8211; the comments there explain much more about the File and FileStream classes.</p>
<p>Next time, serializing AS3 objects to a file.</p>
<h2>Additional resources:</h2>
<ul>
<li><a href="http://livedocs.adobe.com/apollo/1.0/aslr/index.html">Apollo live docs</a></li>
<li><a href="http://www.oreilly.com/catalog/9780596513917/">Apollo for Adobe Flex Developers Pocket Guide</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/mims/apollo-filesystem-io-api-part-1-file-and-filestream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apollo Mail Client Version 0.3</title>
		<link>http://dispatchevent.org/roger/apollo-mail-client-version-03/</link>
		<comments>http://dispatchevent.org/roger/apollo-mail-client-version-03/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 18:54:54 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/apollo-mail-client-version-03</guid>
		<description><![CDATA[I&#8217;m pleased to announce the first alpha release of ApolloMail, a cross-platform POP3 / SMTP e-mail client written in Apollo (obviously) in under 500K (and most of that is my gratuitous about banner). It&#8217;s just the beginnings, really, but here is a short feature matrix: Authenticated POP3 Authenticated SMTP MIME multipart emails HTML e-mail rendering [...]]]></description>
			<content:encoded><![CDATA[<div style="float:right; margin-left: 1em">
<a href="http://partlyhuman.com/lab/apollomail/shot-about.jpg"><img src="http://partlyhuman.com/lab/apollomail/shot-about-thumb.jpg" alt="screenshot"/></a><br/><br />
<a href="http://partlyhuman.com/lab/apollomail/shot-prefs.jpg"><img src="http://partlyhuman.com/lab/apollomail/shot-prefs-thumb.jpg" alt="screenshot"/></a><br/><br />
<a href="http://partlyhuman.com/lab/apollomail/shot-sending.jpg"><img src="http://partlyhuman.com/lab/apollomail/shot-sending-thumb.jpg" alt="screenshot"/></a><br/>
</div>
<p>I&#8217;m pleased to announce the first alpha release of ApolloMail, a cross-platform POP3 / SMTP e-mail client written in Apollo (obviously) in under 500K (and most of that is my gratuitous about banner). It&#8217;s just the beginnings, really, but here is a short feature matrix:</p>
<ul>
<li>Authenticated POP3</li>
<li>Authenticated SMTP</li>
<li>MIME multipart emails</li>
<li>HTML e-mail rendering</li>
<li>Image attachments</li>
<li>Base64 decoding</li>
<li>Quoted-printable decoding</li>
</ul>
<p>Features that may be added very soon are:</p>
<ul>
<li>Local message store</li>
<li>HTML e-mail composing</li>
<li>Rich Text rendering</li>
<li>Better attachment handling</li>
<li>Far more robustness</li>
</ul>
<p>IMAP and SSL are less likely to be added soon. I would like to also use this as a platform to do something new with email, including several unique views which visualize your e-mail life graphically and in three dimensions. Otherwise it&#8217;s just another boring e-mail client.</p>
<p>E-mail has been around since 1971 (that&#8217;s ten years longer than me!), and it&#8217;s been built upon time and time again. I learned a ton about how e-mail works by building this app. On the other hand, I am sure I haven&#8217;t covered every kind of e-mail, POP server, or SMTP server; chances are fairly good you will come across an e-mail that this client doesn&#8217;t handle. Don&#8217;t panic<img src="http://partlyhuman.com/images/famfamfam/exclamation.png" alt="don't panic!"/> It&#8217;s just an alpha. In addition to mail rendering, the error handling while communicating to the server could be better. If you are experiencing trouble, watch the Activity window. Further, the windowing built into this version of Apollo is a hack, so many Flex components don&#8217;t work correctly.</p>
<p>There are a number of interesting technologies in Apollo that this app takes advantage of, which I will be sharing all of in the coming days. First, it leverages my windowing framework which I discussed in a bit of depth <a href="http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-3">before</a>. It logs to a file using the <a href="http://www.partlyhuman.com/blog/roger/logging-to-a-file-in-apollo">File Logging Target</a> I published earlier. It also uses another simple but awesome technique to implement the activity window &#8212; a String logger which exposes its cumulative log messages as a bindable variable &#8212; so the activity window is a TextArea bound to a log target which filters only a specific category of logging information (while all logs are saved to disk). It extends an abstract preferences class which makes it a snap to bind to, serialize and deserialize application preferences to disk. And of course, it makes heavy use of binary sockets and regular expressions made possible by Flash Player 9.</p>
<p>I&#8217;ll be writing more about the technology involved, and sharing more of the source, in another post or two. For now, <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%5Fapollo#runtime">grab the Apollo runtime</a> if you need it (link has mandatory registration), and take ApolloMail for a spin! Cheers!</p>
<p style="border: 6px solid black; background-color: yellow; color: black; font-weight: bold; padding: 1.5em;">Update: This application is made for the Apollo Alpha. If you have the AIR Beta runtime, it will not work. The next version of ApolloMail will be upgraded for this release of the runtime.</p>
<p><a href="http://partlyhuman.com/lab/apollomail/ApolloMail.air.zip"><img src="http://partlyhuman.com/lab/apollomail/icon48.png" alt="icon"/> ApolloMail</a> (ZIP, 486k, ZIP decompresses to an AIR file, open the AIR file after installing the Apollo Runtime.)</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/apollo-mail-client-version-03/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Logging to a File in Apollo</title>
		<link>http://dispatchevent.org/roger/logging-to-a-file-in-apollo/</link>
		<comments>http://dispatchevent.org/roger/logging-to-a-file-in-apollo/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 06:24:52 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/logging-to-a-file-in-apollo</guid>
		<description><![CDATA[Since Apollo apps will be run as standalone desktop applications, logging to trace output or a LocalConnection won&#8217;t really be useful once the app is installed on the end-user&#8217;s machine. It would be great to log (a responsible amount) (if you want) to the resource directory of that application itself. And it would be nice [...]]]></description>
			<content:encoded><![CDATA[<p>Since Apollo apps will be run as standalone desktop applications, logging to trace output or a <code>LocalConnection</code> won&#8217;t really be useful once the app is installed on the end-user&#8217;s machine. It would be great to log (a responsible amount) (if you want) to the resource directory of that application itself. And it would be nice to be able to use built in logging to do so.</p>
<p>Well, I don&#8217;t know why this wasn&#8217;t included with Apollo, but it was certainly easy enough to add in. :) I created com.partlyhuman.apollo.logging.FileTarget so you can use the Flex logging framework while logging to a file. It supports all the options of TraceTarget <a href="http://livedocs.adobe.com/flex/2/langref/mx/logging/targets/TraceTarget.html">(livedocs)</a>, and you can also (optionally) specify a custom filename to log to, or force it to append log output across sesssions.</p>
<p>Here&#8217;s how you might put in a file logging target in MXML:</p>
<pre>&lt;logging:FileTarget
	filename=&quot;error.log&quot;
	append=&quot;false&quot;
	level=&quot;{LogEventLevel.ERROR}&quot;
	includeDate=&quot;true&quot;
	includeTime=&quot;true&quot;
	includeCategory=&quot;true&quot;
	includeLevel=&quot;true&quot;/&gt;</pre>
<p>That&#8217;s showing off a lot of the options. You could just do <code>&lt;logging:FileTarget/&gt;</code> and all would be fine. And if you haven&#8217;t checked out logging in Flex, it&#8217;s pretty nice <a href="http://livedocs.adobe.com/flex/2/docs/00001533.html">(livedocs)</a>. All logging events have a category, so you get a logger for that category then call the appropriate level on it, or call <code>log</code> with the level as an argument. For example:</p>
<pre>Log.getLogger("com.partlyhuman.demoapp.MainController").error("initialization failed!");
Log.getLogger("com.partlyhuman.demoapp.Bubble").info("bubble popped!");</pre>
<p>You don&#8217;t have to be so verbose in your categories, but that&#8217;s one way to use it.</p>
<p>This is gonna totally become like, <b>a thing</b>, but&#8230; happy logging!</p>
<p><img src="http://partlyhuman.com/images/famfamfam/page_white_actionscript.png" alt="file" /><strong>com.partlyhuman.apollo.FileTarget</strong> <a href="http://partlyhuman.com/articles/apollo-logging-file/FileTarget.as.html">View Source</a> | <a href="http://partlyhuman.com/articles/apollo-logging-file/FileTarget.as">Download (.as, 3k)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/logging-to-a-file-in-apollo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apollo Native Windows Part 3</title>
		<link>http://dispatchevent.org/roger/apollo-native-windows-part-3/</link>
		<comments>http://dispatchevent.org/roger/apollo-native-windows-part-3/#comments</comments>
		<pubDate>Sun, 08 Apr 2007 19:16:39 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-3</guid>
		<description><![CDATA[As promised I&#8217;m back with more goodies! This time I&#8217;ve extended the simple window manager to support document windows as well as application windows. I also included a class that binds to your MenuBar in an empty menu and keeps it populated with a list of windows. Clicking a window name in the menu will [...]]]></description>
			<content:encoded><![CDATA[<p>As promised I&#8217;m back with more goodies! This time I&#8217;ve extended the simple window manager to support document windows as well as application windows. I also included a class that binds to your <code>MenuBar</code> in an empty menu and keeps it populated with a list of windows. Clicking a window name in the menu will activate, unminimize, and bring the window to the front.</p>
<p>Application windows are windows that can always be brought up, like an activity window, or an about window. When you create an application window, it is created and hidden. Pressing the close button on the window is captured to hide the window rather than allowing it to be destroyed. Thus, it occupies a permanent position on the Window menu.</p>
<p>Document windows are windows which can be created and destroyed. You can have many instances of the same view class. These are useful for new mails or text files or what-have-you.</p>
<p>The main window has a special use. When you attempt to close it, it attempts to close all the child windows as well &#8212; so you can have an opportunity to save your unfinished document windows.</p>
<p><a href="http://partlyhuman.com/articles/apollo-windows/mail-demo-large.jpg"><img src="http://partlyhuman.com/articles/apollo-windows/mail-demo.jpg" style="float:right; margin-left: 1em" alt="Apollo Windowing in Action"/></a><br />
This is the windowing toolkit at work on an Apollo app I&#8217;m finishing up now. File&rarr;New Mail&#8230; creates a new document window with the compose view, and adds it to the Window menu. As you change the subject, the title of the window and its name in the Window menu are updated. The Window menu also permanently has several application-wide windows which the close button appears to close. The Window menu brings them and any other window back, even if they are minimized, hidden, or stacked on the bottom.</p>
<p>After the cut, let&#8217;s take a look at how this is set up in code. </p>
<p><span id="more-140"></span></p>
<p>First, we&#8217;ll add the application windows somewhere inside our app&#8217;s initialization:</p>
<pre>var wm:WindowManager = WindowManager.getInstance();
wm.newApplicationWindow("About", AboutView,
   {maximizable: false, resizable: false, minimizable:false}, 620, 300);
wm.newApplicationWindow("Application Window 1", TestView1,
   {maximizable: false, resizable: false}, 300, 100);</pre>
<p>That part looks pretty much like the original window manager from the last post. Now let&#8217;s see how we set up a menu item to create new document windows. Here&#8217;s the (abridged) XML source of our menu:</p>
<pre>protected var menuBarXml:XMLList = &lt;&gt;
	&lt;menuitem label=&quot;File&quot;&gt;
		&lt;menuitem label=&quot;New Mail...&quot; data=&quot;newDocument&quot;/&gt;
		&lt;menuitem type=&quot;separator&quot;/&gt;
		&lt;menuitem label=&quot;Exit&quot; data=&quot;exit&quot;/&gt;
	&lt;/menuitem&gt;
	&lt;menuitem label=&quot;Window&quot;/&gt;
&lt;/&gt;;</pre>
<p>And the menu bar:</p>
<pre>&lt;mx:MenuBar width=&quot;100%&quot; id=&quot;menubar&quot; labelField=&quot;@label&quot;
   itemClick=&quot;invokeMenuItem(event.item as XML)&quot;/&gt;</pre>
<p>And the event listener:</p>
<pre>protected function invokeMenuItem(item:XML):void
{
  var str:String = item.@data;
  switch (str)
  {
    case "newDocument":
      WindowManager.getInstance().newDocumentWindow(ComposeView, "New Mail");
      break;
    //... more cases ...
  }
}</pre>
<p>That&#8217;s all you have to do to make a new document window! It&#8217;s automatically created and tracked by the <code>WindowManager</code>.</p>
<p>Now let&#8217;s see what it took to make that empty Window menu live. There&#8217;s a utility class, <code>WindowMenuAddon</code>, that takes care of everything for you. All you have to do is create it and give it references to the <code>MenuBar</code> and the node within your menu XML to populate, and it does the rest:</p>
<pre>var windowMenu:XML = menuBarXml.(@label == "Window")[0];
new WindowMenuAddon(menubar, windowMenu);</pre>
<p>I was pretty happy with how simple this made dealing with windows in the application I&#8217;m building. You&#8217;ll see that there&#8217;s a bunch of methods that let you mess around with windows after they&#8217;re created, too, and without bothering to do your own bookkeeping on where they are.</p>
<p>This code was all written last night and I still need to document it and clean it up a little bit, but here it is.</p>
<p><img src="http://partlyhuman.com/images/famfamfam/page_white_zip.png" alt="archive"/><strong>com.partlyhuman.apollo.windowing.*</strong> <a href="http://partlyhuman.com/articles/apollo-windows/windowing-package/">Browse Source</a> | <a href="http://partlyhuman.com/articles/apollo-windows/windowing-package/WindowingPackage.zip">Download (.ZIP, 7k)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/apollo-native-windows-part-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apollo Native Windows Part 2</title>
		<link>http://dispatchevent.org/roger/apollo-native-windows-part-2/</link>
		<comments>http://dispatchevent.org/roger/apollo-native-windows-part-2/#comments</comments>
		<pubDate>Sat, 07 Apr 2007 23:46:14 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-2</guid>
		<description><![CDATA[Previously, I was trying to manage multiple native windows in an Apollo app. I found that I couldn&#8217;t add Flex components to a new window, and was dismayed. But Danny Dura came to the rescue with a sweet workaround. See the play by play here. I&#8217;m developing a window manager to make things much easier [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I was trying to manage multiple native windows in an Apollo app. I found that I couldn&#8217;t add Flex components to a new window, and was dismayed. But Danny Dura came to the rescue with a sweet workaround. <a href="http://www.partlyhuman.com/blog/roger/cant-wait-apollo-features">See the play by play here.</a></p>
<p>I&#8217;m developing a window manager to make things much easier for Apollo apps. The full window manager will be up shortly. For now, I have created a simple window manager, that wraps up the many steps necessary to create a window containing a Flex view (and clean it up on destruction!) into a really simple singleton class. The more fully-featured window manager will use this class, but it can be very helpful on its own. It makes creating new windows with Flex views a one-line operation:</p>
<p><code>var aboutWin:NativeWindow = WindowManagerSimple.getInstance().newWindow(AboutView, "About", {maximizable: false, resizable: false}, 300, 100);</code></p>
<p>You can use either a class name or a <code>UIComponent</code> instance for the view, and all the other parameters are optional. The window options parameter can accept a <code>NativeWindowInitOptions</code> object or an anonymous object of properties that override the defaults for brevity. See the source file for more info, Javadoc-styleeeee.</p>
<p><strong>Next:</strong> A more complete window manager, including application and document windows. <a href="http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-3">Read on</a>.</p>
<p><img src="http://partlyhuman.com/images/famfamfam/page_white_actionscript.png" alt="file" /><strong>com.partlyhuman.apollo.WindowManagerSimple</strong> <a href="http://partlyhuman.com/articles/apollo-windows/WindowManagerSimple.as.html" target="_blank">View Source</a> | <a href="http://partlyhuman.com/articles/apollo-windows/WindowManagerSimple.zip">Download (.ZIP, 6K)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/apollo-native-windows-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Can&#8217;t-Wait Apollo Features</title>
		<link>http://dispatchevent.org/roger/cant-wait-apollo-features/</link>
		<comments>http://dispatchevent.org/roger/cant-wait-apollo-features/#comments</comments>
		<pubDate>Fri, 06 Apr 2007 09:45:47 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/cant-wait-apollo-features</guid>
		<description><![CDATA[I was just working on a good way to flexibly manage my application&#8217;s document windows in Apollo, and when I started trying to throw real windows up, I ran into a wall. The windowing docs clearly showed an example of adding display objects right into the stage of a NativeWindow, but I wasn&#8217;t able to [...]]]></description>
			<content:encoded><![CDATA[<p>I was just working on a good way to flexibly manage my application&#8217;s document windows in Apollo, and when I started trying to throw real windows up, I ran into a wall. The windowing docs clearly showed an example of adding display objects right into the stage of a <code>NativeWindow</code>, but I wasn&#8217;t able to spawn windows with views in them. After banging my head for a while, I found the note cleverly <em>hidden at the very top of <a href="http://livedocs.adobe.com/labs/as3preview/langref/flash/display/NativeWindow.html" target="_blank">the asdocs</a> with a bold &#8220;Important&#8221;!</em> Those tricky Adobe technical writers. Anyway, you can add in an HTML view, or display objects, but apparently those windows run their own instance of Flash Player: you can&#8217;t just add in Flex components. I would be curious to find out if cross-window scripting is also impossible now. I would guess so. I&#8217;m guessing that getting a unified Flash Player execution environment across native OS windows in all supported OSes is a challenging hurdle (to say the least).</p>
<p>At least mine eyes did not deceive me about the other feature I really am looking forward to, native menu bar support. This is more of an issue for the Mac platform since menus are already grouped with the main application window in Windoze.</p>
<p><img src="http://partlyhuman.com/articles/misc/windows3.1mail.gif" style="float:right;margin-left:1em"/><br />
So these two limitations kind of throw a wrench in what I was trying to do&#8230; I guess I&#8217;ll do the Windows 3.1 thing and have one big window with a window-docked menu, and containing the document windows as children. The document windows and menu will both be standard flex components within the main Apollo window. Anyway, I&#8217;m looking forward to the next public alpha rev! Hopefully it&#8217;s on its way :)</p>
<p><b>Update:</b> I was thankfully wrong about cross window applications, even in the alpha. Adding Flex components requires a pretty straightforward workaround. <a href="http://www.danieldura.com/archive/apollo-multi-window-support-using-flex">Daniel Dura&#8217;s approach</a>. <a href="http://custardbelly.com/blog/?p=60">Todd Anderson&#8217;s approach</a>. Ask (a stupid question) and ye shall receive (an answer from the internets)!</p>
<p><b>Update:</b> Native window saga <a href="http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-2">part two</a>, <a href="http://www.partlyhuman.com/blog/roger/apollo-native-windows-part-3">part three</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/cant-wait-apollo-features/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Apollo Tip: Never See the Flex Loader</title>
		<link>http://dispatchevent.org/roger/apollo-tip-never-see-the-flex-loader/</link>
		<comments>http://dispatchevent.org/roger/apollo-tip-never-see-the-flex-loader/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 19:25:44 +0000</pubDate>
		<dc:creator>Roger Braunstein</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.partlyhuman.com/blog/roger/apollo-tip-never-see-the-flex-loader</guid>
		<description><![CDATA[Here&#8217;s a really simple trick you can use to prevent the Flex loader from showing when you start up your application. All you have to do is hide the window, and show it when the Application is ready. In MyApplication-app.xml: &#60;rootContent systemChrome=&#34;standard&#34; transparent=&#34;false&#34; visible=&#34;false&#34;&#62;[SWF reference is generated]&#60;/rootContent&#62; This sets your application manifest to make the [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a really simple trick you can use to prevent the Flex loader from showing when you start up your application. All you have to do is hide the window, and show it when the Application is ready.</p>
<p>In <tt>MyApplication-app.xml</tt>:<br />
<code>&lt;rootContent systemChrome=&quot;standard&quot; transparent=&quot;false&quot; <u>visible=&quot;false&quot;</u>&gt;[SWF reference is generated]&lt;/rootContent&gt;</code></p>
<p>This sets your application manifest to make the root window invisible. Then, you just make it visible when everything&#8217;s ready:</p>
<p>In <tt>MyApplication.mxml</tt>:<br />
<code>&lt;mx:MyApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; <u>creationComplete=&quot;window.visible = true&quot;</u>&gt; ...</code></p>
<p>Easy peasy!</p>
]]></content:encoded>
			<wfw:commentRss>http://dispatchevent.org/roger/apollo-tip-never-see-the-flex-loader/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

