<?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>creacog &#187; Flex 3</title>
	<atom:link href="http://blog.creacog.co.uk/category/adobe/flex/flex-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.creacog.co.uk</link>
	<description></description>
	<lastBuildDate>Thu, 19 Jan 2012 16:43:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>overlaying VideoDisplay with constrained fluid layout</title>
		<link>http://blog.creacog.co.uk/2009/09/21/overlaying-videodisplay-with-constrained-fluid-layout/</link>
		<comments>http://blog.creacog.co.uk/2009/09/21/overlaying-videodisplay-with-constrained-fluid-layout/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 14:11:42 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Components]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/?p=234</guid>
		<description><![CDATA[// UPDATE 28 April 2010 : This subject is revisited in relation to Flex 4 spark components, here. The problem: In Flex, how to overlay the video with something (e.g. a logo or caption) and keep the overlay relative to a corner of the actual video rectangle. Sounds like it should be a simple matter [...]]]></description>
			<content:encoded><![CDATA[<p><script src="/wp-content/swfobject_2_2/swfobject.js" type="text/javascript"></script> <script type="text/javascript">// <![CDATA[
swfobject.registerObject("videoDisplaySample1", "10.0.32", "/wp-content/swfobject_2_2/expressInstall.swf"); 	swfobject.registerObject("videoDisplaySample2", "10.0.32", "/wp-content/swfobject_2_2/expressInstall.swf"); 	swfobject.registerObject("videoDisplaySample3", "10.0.32", "/wp-content/swfobject_2_2/expressInstall.swf");
// ]]&gt;</script></p>
<p><strong><a title="Flex 4 Spark VideoDisplay (measure, overlay, skin)" href="http://blog.creacog.co.uk/2010/04/28/flex-4-spark-videodisplay-measure-overlay-skin/">UPDATE 28 April 2010</a></strong><a title="Flex 4 Spark VideoDisplay (measure, overlay, skin)" href="http://blog.creacog.co.uk/2010/04/28/flex-4-spark-videodisplay-measure-overlay-skin/"> : This subject is revisited in relation to Flex 4 spark components, here.</a></p>
<p>The problem: In Flex, how to overlay the video with something (e.g. a logo or caption) and keep the overlay relative to a corner of the actual video rectangle. Sounds like it should be a simple matter of creating a container and layering in the VideoDisplay instance and the over lay instance ? But&#8230;</p>
<p>In each of the following samples:</p>
<ul>
<li>We have an <a title="&lt;mx:Panel&gt;" href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Panel.html" target="_blank">&lt;mx:Panel&gt;</a> which has been extended to be reposition-able (drag the title bar) and resizable (drag the lower-right corner).</li>
<li>The panel contains an <a title="&lt;mx:VideoDisplay&gt;" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/VideoDisplay.html" target="_blank">&lt;mx:VideoDisplay&gt;</a> with 100% width and height</li>
<li>The panel also contains an overlay graphic &#8211; in this case using <a title="&lt;mx:Image&gt;" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Image.html" target="_blank">&lt;mx:Image&gt;</a></li>
<li>To view the samples you need to have Flash Player 10.0.32. or higher installed. You can get the latest Flash Player from here: <a title="Get Flash Player" href="http://get.adobe.com/flashplayer/" target="_blank">http://get.adobe.com/flashplayer/</a></li>
<li><a title="VideoDisplay samples source" href="/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/0100-VideoDisplaySample.zip">The source-code for these samples can be downloaded</a></li>
<li>View source with a right-click on each of the samples</li>
</ul>
<h2>Video Display overlay Sample 1</h2>
<p>In our first sample we simply place our overlay image using attributes &#8216;top&#8217; and &#8216;right&#8217; to keep the overlay&#8217;s top-right corner to 10px in from the VideoDisplay top-right corner.</p>
<p><img src="/wp-content/code-samples/Flex3VideoDisplaySamples/snippets/sample1Snippet1.gif" alt="code-snippet" /></p>
<p>It basically looks fine until you hit the play button and start resizing the panel.</p>
<div>
<object id="videoDisplaySample1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="300" ><param name="allowFullScreen" value="true" /><param name="base" value="." /><param name="src" value="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample1.swf" /><!--[if !IE]>--><br />
<object width="300" height="300" base="." allowfullscreen="true" base="." data="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample1.swf" type="application/x-shockwave-flash"><br />
<!--<![endif]--><br />
<!--[if !IE]>--><br />
</object><br />
<!--<![endif]--><br />
</object></div>
<div>
<p><a title="View source for sample 1" href="http://blog.creacog.co.uk/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/index.html" target="_blank">View source</a></div>
<p>As you can see the actual video within the VideoDisplay is constrained by its rectangle and depending on the differing aspect ratios, there will either be black space at the sides or the top, and our overlay is faithfully anchored to top right corner of the VideoDisplay and looks odd unless the aspect ratios are equal.</p>
<p>So how to solve this?</p>
<p>Looking at <a title="&lt;mx:VideoDisplay&gt;" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/VideoDisplay.html">the documentation for VideoDisplay</a>, there are many width and height properties to play with, however none of these relate to the current width and height or position of the contained video rectangle. You might think while looking at the documentation that the <a title="VideoDisplay.videoWidth" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/VideoDisplay.html#videoWidth">videoWidth</a> and <a title="VideoDisplay.videoHeight" href="http://livedocs.adobe.com/flex/3/langref/mx/controls/VideoDisplay.html#videoHeight">videoHeight</a> properties might give the values we are after, but not so. They only return the &#8216;original&#8217; width and height of the loaded video.</p>
<p>Fortunately the OpenSource nature of the Flex SDK and the magic of, holding the command key on a Mac (control key on a PC) with the cursor over  the &lt;mx:VideoDisplay&gt; opening tag, then clicking it as it underlines,  (using in Flash Builder  or Flex Builder) will open the source for the VideoDisplay component within a new editor. Browsing through the code you will see at line 198:<br />
<code>mx_internal var videoPlayer:VideoPlayer = null;</code></p>
<p>It is this videoPlayer instance who&#8217;s properties we need to monitor to calculate our overlay&#8217;s position. The instance is not generally exposed through the VideoDisplay component&#8217;s api. Nor is it documented. However since it has been placed in the mx_internal name space, we can actually access it with namespace notation&#8230;</p>
<p><code>videoDisplay.mx_internal::videoPlayer.attribute</code></p>
<p>Where we replace &#8216;attribute&#8217; with the property name we are after, so the following would be of use to us&#8230;</p>
<p><code>videoDisplay.mx_internal::videoPlayer.x</code><br />
<code>videoDisplay.mx_internal::videoPlayer.y</code><br />
<code>videoDisplay.mx_internal::videoPlayer.width</code><br />
<code>videoDisplay.mx_internal::videoPlayer.height</code></p>
<h2 style="font-size: 1.5em;">Video Display overlay Sample 2</h2>
<p>In this second sample, we create a positionOverlay method and call it from the resize event of the VideoDisplay component. Within positionOverlay we use the name space notation to get the videoPlayer properties and use some basic maths to reposition our overlay based on the top-right corner of the videoPlayer instance rather than the videoDisplay instance.</p>
<p><img src="/wp-content/code-samples/Flex3VideoDisplaySamples/snippets/sample2Snippet1.gif" alt="code-snippet" /></p>
<p>Additionally we call positionOverlay from our applicationComplete handler to set the initial position.</p>
<div>
<object id="videoDisplaySample2" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="300"><param name="base" value="." /><param name="allowfullscreen" value="true" /><param name="src" value="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample2.swf" /><!--[if !IE]>--><br />
<object width="300" height="300" base="." allowfullscreen="true" data="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample2.swf" type="application/x-shockwave-flash"><br />
<!--<![endif]--><br />
<!--[if !IE]>--><br />
</object><br />
<!--<![endif]--><br />
</object></div>
<div>
<p><a title="View source for sample 2" href="http://blog.creacog.co.uk/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/index2.html" target="_blank">View source</a></div>
<p>This basically seems ok, but play with it for a while and it is clear that something is wrong&#8230;</p>
<ul>
<li>Resizing slowly, seems ok</li>
<li>Resizing quickly, and there seems to be some lag in the position of the overlay</li>
<li>Release the resize handle while resizing quickly and the overlay can be left behind in completely the wrong place</li>
</ul>
<p>Having traced the videoPlayer instance properties from within the positionOverlay handler, it is apparent that while the videoDisplay properties are correct, the videoPlayer properties are as they were previously. i.e. as they were rather than as they shall be.</p>
<h2 style="font-size: 1.5em;">Video Display overlay Sample 3 &#8211; This one works properly!</h2>
<p>This is where Player version 10 comes in. It added <a title="Event.EXIT_FRAME" href="http://livedocs.adobe.com/flex/3/langref/flash/events/Event.html#EXIT_FRAME" target="_blank">Event.EXIT_FRAME</a>. (If your project targets a player older than 10, you will not see this event in your code assist.) If we use the exit frame event to defer the call to overlayPosition, we can then get measured values from videoPlayer and correctly position the overlay.</p>
<p>To do this I have created a new method positionOverlayOnExitFrame who&#8217;s job is to add an EXIT_FRAME listener who&#8217;s handler will be overlayPosition. The first job of which is to remove the listener, so that it only gets called once. By using a listener we need to change the interface of overlayPosition to accept an Event argument. But we are not interested in the event information and we still wish to call positionOverlay directly, so we have allowed the argument to have a null default.</p>
<p><img src="/wp-content/code-samples/Flex3VideoDisplaySamples/snippets/sample3Snippet1.gif" alt="code-snippet" /></p>
<p>Playing with the resize handle now, no-matter how quickly it is moved, shows no lag, and always drops in the correct place.</p>
<div>
<object id="videoDisplaySample3" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="300" ><param name="base" value="." /><param name="allowfullscreen" value="true" /><param name="src" value="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample3.swf" /><!--[if !IE]>--><br />
<object width="300" height="300" base="." allowfullscreen="true" data="/wp-content/code-samples/Flex3VideoDisplaySamples/VideoDisplaySample3.swf" type="application/x-shockwave-flash"><br />
<!--<![endif]--><br />
<!--[if !IE]>--><br />
</object><br />
<!--<![endif]--><br />
</object></div>
<div>
<p><a title="View source for sample 3" href="http://blog.creacog.co.uk/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/index3.html" target="_blank">View source</a></div>
<p>Finally, just to re-iterate, <a title="download source code : 0100-VideoDisplaySample.zip" href="/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/0100-VideoDisplaySample.zip">source code zip for these examples is here</a>.</p>
<p>Note: These samples were built against Flex SDK version 3.4.</p>
<p>Note: I haven&#8217;t found any official documentation relating to when Event.EXIT_FRAME arrived in the player runtime. The <a title="Event.EXIT_FRAME" href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/events/Event.html#EXIT_FRAME" target="_blank">Flash CS4 documentation for Event.EXIT_FRAME</a> indicates player 9. However unless you target player 10 in Flex/Flash Builder, you will get compile errors. If anyone has accurate references, please post to the comments &#8211; thanks.</p>
<p>Note: When you look at the <a title="View source code" href="http://blog.creacog.co.uk/wp-content/code-samples/Flex3VideoDisplaySamples/srcview/index3.html" target="_blank">source view</a>, it appears ragged. This is because in creating the HTML, Flash builder simply converts tab characters to four space characters. Clearly not every tab in my code actually represents 4 characters and therefore what should look like neat columns becomes ragged. I have filed a bug/enhancement request. If you too would like this fixed, feel free to add your vote to <a title="FB-23060" href="https://bugs.adobe.com/jira/browse/FB-23060" target="_blank">FB-23060</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2009/09/21/overlaying-videodisplay-with-constrained-fluid-layout/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>finding information on Flex 3 component lifecycle</title>
		<link>http://blog.creacog.co.uk/2009/05/21/finding-information-on-flex-3-component-lifecycle/</link>
		<comments>http://blog.creacog.co.uk/2009/05/21/finding-information-on-flex-3-component-lifecycle/#comments</comments>
		<pubDate>Thu, 21 May 2009 11:40:26 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Components]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/?p=210</guid>
		<description><![CDATA[Quickly creating re-usable components based on others, augmented with additional ActionScript behaviour using MXML is as simple as can be. However, to create a component from scratch using ActionScript requires a lot of detailed knowledge of how the Flex framework works and the component life-cycle in particular. The Flex documentation attempts to describe the lifecycle, but [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px;">Quickly creating re-usable components based on others, augmented with additional ActionScript behaviour using MXML is as simple as can be. However, to create a component from scratch using ActionScript requires a lot of detailed knowledge of how the Flex framework works and the component life-cycle in particular.</p>
<p>The <a title="About creating advanced components" href="http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_advanced_2.html">Flex documentation attempts to describe the lifecycle<img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.84/t.gif" alt="" /><img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.85/t.gif" alt="" /></a>, but can leave the developer with lots of unanswered questions. When I got more involved in developing components I found <a href="http://www.amazon.co.uk/gp/product/0596516215?ie=UTF8&amp;tag=creacogtheblo-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=0596516215">chapter 19 of Programming Flex 3<img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.84/t.gif" alt="" /><img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.85/t.gif" alt="" /></a><img src="http://www.assoc-amazon.co.uk/e/ir?t=creacogtheblo-21&amp;l=as2&amp;o=2&amp;a=0596516215" border="0" alt="" width="1" height="1" /> good for filling in the gaps.</p>
<p>This week a new and free paper has been published by DevelopmentArc that also explores the component life-cycle and the application life-cycle. A very well worth while read….</p>
<p><a title="Understanding the Adobe Flex® 3 Component and Framework Lifecycle" href="http://www.developmentarc.com/site/articles/">Understanding the Adobe Flex® 3 Component and Framework Lifecycle<img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.84/t.gif" alt="" /><img id="snap_com_shot_link_icon" class="snap_preview_icon" src="http://i.ixnp.com/images/v3.85/t.gif" alt="" /></a></p>
<p>Feel free to post links to other compent lifecycle resrouces in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2009/05/21/finding-information-on-flex-3-component-lifecycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash.display.BitmapData gotcha &#8211; well gotme for a while</title>
		<link>http://blog.creacog.co.uk/2009/03/13/flashdisplaybitmapdata-gotcha-well-gotme-for-a-while/</link>
		<comments>http://blog.creacog.co.uk/2009/03/13/flashdisplaybitmapdata-gotcha-well-gotme-for-a-while/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 01:45:34 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/?p=187</guid>
		<description><![CDATA[The documentation is correct, so i have no excuse, but I didn&#8217;t initially read much beyond the signature of the constructor&#8230; public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF) I needed a transparent bitmap. Reading the default &#8220;transparent:Boolean = true&#8221;, I assumed by simply supplying width and height, a transparent bitmap is what [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="BitmapData" href="http://livedocs.adobe.com/flex/3/langref/flash/display/BitmapData.html#BitmapData()">documentation is correct</a>, so i have no excuse, but I didn&#8217;t initially read much beyond the signature of the constructor&#8230;</p>
<p>public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)</p>
<p>I needed a transparent bitmap. Reading the default &#8220;transparent:Boolean = true&#8221;, I assumed by simply supplying width and height, a transparent bitmap is what I would get. Not so! I got a white rectangle. The reason being, that the default fill colour is 100% white. (The first pair of FFs representing the alpha in ARGB).</p>
<p>At first it would seem slightly unintuitive for the second default to conflict with the first, until one realises that the &#8216;transparent&#8217; flag is there to indicate whether the object will support transparency or not. Not to state that it should be initially created transparent. Supporting transparency increases data size from 24 bits per pixel to 32 bits per pixel.</p>
<p>So what i should have done :</p>
<p>bmd = new BitmapData( width, height, true, 0 );</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2009/03/13/flashdisplaybitmapdata-gotcha-well-gotme-for-a-while/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>what the feck is AOO TLP ?</title>
		<link>http://blog.creacog.co.uk/2008/10/19/what-the-feck-is-aoo-tlp/</link>
		<comments>http://blog.creacog.co.uk/2008/10/19/what-the-feck-is-aoo-tlp/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 16:37:50 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[CS3]]></category>
		<category><![CDATA[CS4]]></category>
		<category><![CDATA[DreamWeaver]]></category>
		<category><![CDATA[Fireworks]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[License]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/10/19/what-the-feck-is-aoo-tlp/</guid>
		<description><![CDATA[(Update: 28/10/2008 here) Having been chastised for using these &#8216;unknown acronyms&#8217; in my comment on jd&#8217;s weblog, I thought it worth writing a brief entry describing what these acronyms stand for and how they may be of interest for those purchasing or upgrading Adobe software. AOO : Adobe Open Options TLP : Transaction Licensing Program [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(Update: 28/10/2008 <a href="#update" title="update 28/10/2008">here</a>)</strong></p>
<p>Having been chastised for using these &#8216;unknown acronyms&#8217; in my comment on <a href="http://blogs.adobe.com/jd/2008/10/cs4_painpoints.html" title="CS4 Pain points">jd&#8217;s weblog</a>, I thought it worth writing a brief entry describing what these acronyms stand for and how they may be of interest for those purchasing or upgrading Adobe software.</p>
<ul>
<li><a href="http://www.adobe.com/aboutadobe/openoptions/" title="Adobe volume licensing programs">AOO : Adobe Open Options</a></li>
</ul>
<ul>
<li><a href="http://www.adobe.com/aboutadobe/openoptions/tlp.html" title="Adobe Volume Licensing: TLP Program">TLP : Transaction Licensing Program</a></li>
</ul>
<p>Essentially this is all to do with volume licensing as an alternative to purchasing products through the Adobe store or other 3rd party suppliers. Volume licensing sounds like it is aimed at large organisations purchasing site-license. However the Transaction Licensing Programme facilitates as little as a single product license. The way the scheme works is to provide a transaction discount should you purchase multiple products in a single transaction based upon a point value for each product. TLP purchases may be made through 3rd party suppliers, but also through Adobe directly as in my case. There is no published price list so you need to request a quote.</p>
<p>The key point of interest to me was the <a href="http://www.adobe.com/aboutadobe/openoptions/upgradeplan.html" title="Adobe Volume Licensing: Upgrade Plan">Upgrade Plan</a> which allows licenses to be purchased over 24 month subscriptions. Essentially this means I effectively have already paid to cover my CS4 upgrade. This is the point I was trying to make on <a href="http://blogs.adobe.com/jd/2008/10/cs4_painpoints.html" title="CS4 Pain points">jd&#8217;s weblog</a>. He acknowledges that trial versions of CS3 products not being available until mid November is a &#8216;Pain point&#8217; and he provides some explanation including the phrase &#8220;The big shipping versions get released first.&#8221;. Well I&#8217;m a AOO TLP upgrade licensee who&#8217;s just been told I may have to wait until the &#8216;end of November&#8217; for it to physically ship to me. If it is painful for &#8216;users&#8217; who haven&#8217;t paid for the software yet, imagine the pain for those who have paid for the software, but may have to wait until the end of November.</p>
<p>So while the Upgrade Plan offers some value, fulfilment seems less than ideal especially given this Key benefit documented on the Adobe site: &#8220;Get timely notifications of new upgrades, so you can stay on top of new product releases.&#8221;.</p>
<p>This is now my latest bug-bear. For Adobe to see how the customer experience could be improved in this regard, they need only look back to the now discontinued <a href="http://www.adobe.com/devnet/subscriptions/articles/mchambers_devnet.html" title="DevNet Professional">Macromedia DEVNET Pro subscription</a>, where serial numbers and downloadable installers were immediately available to subscribers from day one of a new product shipping.</p>
<p>If this was fixed, I could now be blogging about cool new stuff in CS4 rather than  fuming over this and wondering if I would actually be better-off purchasing through conventional means.</p>
<p><a title="update" name="update" id="update"></a><strong>UPDATE : 28/10/2008</strong></p>
<p>Received my Adobe License Fulfilment email on 26th. Logged in and was able to request media for the upgrades, but at the time couldn&#8217;t see serial numbers or any way of downloading. However just checked again today, and the serials are there and I now have downloads in progress &#8211; and at a good bit-rate. So I&#8217;m feeling a lot happier now than when this post was originally published. While the process has not been entirely seamless, this time is far better than my previous experience with CS3 where I had to wait for physical media.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/10/19/what-the-feck-is-aoo-tlp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>looking forward to this week&#8217;s LFPUG</title>
		<link>http://blog.creacog.co.uk/2008/09/23/looking-forward-to-this-weeks-lfpug/</link>
		<comments>http://blog.creacog.co.uk/2008/09/23/looking-forward-to-this-weeks-lfpug/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 09:26:04 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/09/23/looking-forward-to-this-weeks-lfpug/</guid>
		<description><![CDATA[Really haven&#8217;t spent enough time &#8216;finenessing&#8217; Flex based UIs recently, so especially looking forward to a something of a fast-track on Flex Effects in Tink&#8216;s presentation. Always good to hear how others work with their clients too in the &#8220;ActionScript in Commercial Environment&#8221;session. Full details: London Flash Platform User Group 25th Sept 2008]]></description>
			<content:encoded><![CDATA[<p>Really haven&#8217;t spent enough time &#8216;finenessing&#8217; Flex based UIs recently, so especially looking forward to a something of a fast-track on Flex Effects in <a href="http://www.lfpug.com/tink/" title="Tink">Tink</a>&#8216;s presentation.</p>
<p>Always good to hear how others work with their clients too in the &#8220;ActionScript in Commercial Environment&#8221;session.</p>
<p><a href="http://www.lfpug.com/25th-september-2008-25092008/" title="LFPUG 25th September 2008">Full details: London Flash Platform User Group 25th Sept 2008 </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/09/23/looking-forward-to-this-weeks-lfpug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR update Framework (beta), locating config file</title>
		<link>http://blog.creacog.co.uk/2008/06/21/air-update-framework-beta-locating-config-file/</link>
		<comments>http://blog.creacog.co.uk/2008/06/21/air-update-framework-beta-locating-config-file/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 14:59:06 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 3]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/06/21/air-update-framework-beta-locating-config-file/</guid>
		<description><![CDATA[When using the Adobe AIR Update Framework for the first time, you will be stepping through the associated documentation. You will probably initially decide to use a configuration XML file to govern the update process. The documentation presents the following line to inform the framework of the location of your config file: Point the configurationFile [...]]]></description>
			<content:encoded><![CDATA[<p>When using the <a href="http://labs.adobe.com/wiki/index.php/Adobe_AIR_Update_Framework#Known_Issues" title="Adobe AIR Update Framework">Adobe AIR Update Framework</a> for the first time, you will be stepping through the associated documentation. You will probably initially decide to use a configuration XML file to govern the update process. The documentation presents the following line to inform the framework of the location of your config file:</p>
<blockquote><p> Point the configurationFile property to the location of that file: as in the following ActionScript:<br />
<code>appUpdater.configurationFile = new File("cfg/updateConfig.xml");</code></p></blockquote>
<p>If you are familiar with the File class, you will see that this is likely to generate a run-time-error, especially when testing in adl&#8230;</p>
<blockquote><p>ArgumentError: Error #2004: One of the parameters is invalid.<br />
at Error$/throwError()<br />
at flash.filesystem::File/set nativePath()<br />
at flash.filesystem::File()</p></blockquote>
<p>If you are like me, you&#8217;ll probably want to place the updateConfig.xml file within the application directory next to the *-app.xml file. If so, the line of code you need can be written:</p>
<p><code>appUpdater.configurationFile = new File( File.applicationDirectory.resolvePath( "updateConfig.xml" ).nativePath );</code></p>
<p>or more compactly, using the &#8220;app:/&#8221; url scheme:</p>
<p><code>appUpdater.configurationFile = new File( "app:/updateConfig.xml" );</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/06/21/air-update-framework-beta-locating-config-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>more mvc with lfpug</title>
		<link>http://blog.creacog.co.uk/2008/06/19/more-mvc-with-lfpug/</link>
		<comments>http://blog.creacog.co.uk/2008/06/19/more-mvc-with-lfpug/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 12:38:04 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 2]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/06/19/more-mvc-with-lfpug/</guid>
		<description><![CDATA[Over the past few months I&#8217;ve been getting my head around the likes of Cairngorm, PureMVC and better use of design patterns in general. So looking forward to tonight&#8217;s LFPUG to see what the Slide Framework For Flex adds to the mix. The other stuff on large datasets looks pretty good too!]]></description>
			<content:encoded><![CDATA[<p>Over the past few months I&#8217;ve been getting my head around the likes of Cairngorm, PureMVC and better use of design patterns in general. So looking forward to tonight&#8217;s <a href="http://www.lfpug.com/19th-june-2008-19062008/" title="London Flash Platform User Group">LFPUG</a> to see what the Slide Framework For Flex adds to the mix. The other stuff on large datasets looks pretty good too!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/06/19/more-mvc-with-lfpug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex and AIR updates</title>
		<link>http://blog.creacog.co.uk/2008/06/18/flex-and-air-updates/</link>
		<comments>http://blog.creacog.co.uk/2008/06/18/flex-and-air-updates/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 13:48:04 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Cairgorm]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Builder]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/06/18/flex-and-air-updates/</guid>
		<description><![CDATA[A little while ago I got around to building my version of an alert tool sampler, using it as an exercise to learn Cairngorm. (The documentation for which I have found particularly poor with the exception of a few gems such as David Tucker&#8217;s excellent Cairngorm &#8216;Getting started&#8217; tutorials.) Typically AIR developers will all want [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago I got around to building my version of an alert tool sampler, using it as an exercise to learn Cairngorm. (The documentation for which I have found particularly poor with the exception of a few gems such as <a href="http://www.davidtucker.net/category/cairngorm/" title="davidtucker.net : ARCHIVE FOR THE 'CAIRNGORM' CATEGORY">David Tucker&#8217;s excellent Cairngorm &#8216;Getting started&#8217; tutorials</a>.)</p>
<p>Typically AIR developers will all want to take advantage of the Update capability, but in it&#8217;s original form requires some work. <a href="http://blog.everythingflex.com/air-central/everythingflexair1swc/updatemanager/" title="UpdateManager">Rich Tretola&#8217;s UpdateManager did the job</a>, but I wanted more programmatic control, interception of events and a slightly different UI work-flow, and set about creating my own.  Just as that phase of the work is completed, I find <a href="http://labs.adobe.com/wiki/index.php/Adobe_AIR_Update_Framework" title="Adobe AIR Update Framework">Adobe&#8217;s Update Framework on labs </a>which although beta, does a much better job. I wish it was there a week ago.</p>
<p>Also, I just took the opportunity to update to AIR 1.1. Unfortunately updating Flex to use the new AIR  is a little messy (in that it requires manually copying some files rather than running an installer) and means moving to the 3.0.2 stable build of the Flex SDK. However it is not difficult and <a href="http://www.adobe.com/devnet/flex/articles/flex_air1.1.html" title="Developing Flex applications for AIR 1.1">the instructions to follow are here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/06/18/flex-and-air-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex / AIR / DataGrid / itemEditor bug?</title>
		<link>http://blog.creacog.co.uk/2008/04/16/flex-air-datagrid-itemeditor-bug/</link>
		<comments>http://blog.creacog.co.uk/2008/04/16/flex-air-datagrid-itemeditor-bug/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 16:51:25 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex Builder]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/04/16/flex-air-datagrid-itemeditor-bug/</guid>
		<description><![CDATA[If you are using DataGrid in a Flex/AIR application, the chances are you will at some stage hit the following RunTime error&#8230; TypeError: Error #1010: A term is undefined and has no properties. .. with a traceback indicating the error occurred within DataGrid.as. At which point you will stare at your own code for a [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using DataGrid in a Flex/AIR application, the chances are you will at some stage hit the following RunTime error&#8230;</p>
<p>TypeError: Error #1010: A term is undefined and has no properties.</p>
<p>.. with a traceback indicating the error occurred within DataGrid.as. At which point you will stare at your own code for a while and wonder why.</p>
<p>In my circumstance I pinned this down to clearing the contents of the data provider and repopulating when there is an item renderer active on the DataGrid. A use-case that probably doesn&#8217;t come up that often in web-based Flex apps, since if the user clicks another control to trigger an update, the item renderer is exited at that point and the edit committed prior to the dataprovider changing.</p>
<p>In an AIR app, we have native menus available to us. When the user employs native menu selection, the item editor remains active. If that menu option triggers a repolpulation of the data provider (use-case example File&gt;Open), we then get the error.</p>
<p>The workaround is pretty simple. A call needs to be made to destroyItemEditor() on the DataGrid instance before repopulating it&#8217;s data. In a simple application this is no great problem. But if you&#8217;ve gone to the effort of using something like the PureMVC framework to separate Data Object from View Components, the data object isn&#8217;t supposed to have any knowledge of the view. So in my case thefix is quite crude &#8211; when issuing the open command, a notification  to destory item editors will be issued so any view component that uses them may destroy their editor prior to the repopulation.</p>
<p>My contention is that it should be the responsibilty of the DataGrid to destroy the item editor if the dataprovider updates.</p>
<p>I have this logged as a bug with Adobe (<a href="https://bugs.adobe.com/jira/browse/SDK-15280" title="#1010 runtime error when repopulating datagrid dataprovider while a field is editable">SDK-15280</a>), along with sample code demonstrating the issue. Feel free to review and vote for the bug if you are in agreement with my point and comment further therein if you disagree or have better suggestions to offer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/04/16/flex-air-datagrid-itemeditor-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>finding documentation on implementing native menus in Flex/AIR applications</title>
		<link>http://blog.creacog.co.uk/2008/03/20/finding-documentation-on-implementing-native-menus-in-flexair-applications/</link>
		<comments>http://blog.creacog.co.uk/2008/03/20/finding-documentation-on-implementing-native-menus-in-flexair-applications/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 17:30:20 +0000</pubDate>
		<dc:creator>creacog</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 3]]></category>

		<guid isPermaLink="false">http://blog.creacog.co.uk/2008/03/20/finding-documentation-on-implementing-native-menus-in-flexair-applications/</guid>
		<description><![CDATA[When you come to build your first Flex/AIR application that needs a native menu (Application menu on a Mac, or Window menu on a Windows PC), you&#8217;ll probably find your way to the &#8220;Windows, menus, and taskbars&#8221; section within the documentation. From there you&#8217;ll navigate to &#8220;Working with native menus&#8221; and spend some time studying [...]]]></description>
			<content:encoded><![CDATA[<p>When you come to build your first Flex/AIR application that needs a native menu (Application menu on a Mac, or Window menu on a Windows PC), you&#8217;ll probably find your way to the &#8220;<a href="http://livedocs.adobe.com/flex/3/html/dg_part_5_1.html" title="Windows, menus, and taskbars">Windows, menus, and taskbars</a>&#8221; section within the documentation. From there you&#8217;ll navigate to &#8220;<a href="http://livedocs.adobe.com/flex/3/html/Menus_1.html" title="Working with native menus">Working with native menus</a>&#8221; and spend some time studying &#8220;<a href="http://livedocs.adobe.com/flex/3/html/Menus_3.html" title="Creating native menus">Creating native menus</a>&#8221; before going on to view the <a href="http://livedocs.adobe.com/flex/3/html/Menus_9.html" title="Example: Window and application menu">example code</a>. At this point you&#8217;ll probably have a shock at how much AS3 code needs to be written to implement such a simple menu. Not at all what you are used to in Flex.</p>
<p>If you are thinking there must be a way to do this using a component. You&#8217;d be right, but it is documented in the &#8220;<a href="http://livedocs.adobe.com/flex/3/html/FlexApolloComponents_01.html" title="Using the Flex AIR components">Using the Flex AIR components</a>&#8221; &#8220;<a href="http://livedocs.adobe.com/flex/3/html/FlexApolloComponents_10.html" title="About the FlexNativeMenu control">About the FlexNativeMenu control</a>&#8220;section not the &#8220;Windows, menus and taskbars&#8221; section.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.creacog.co.uk/2008/03/20/finding-documentation-on-implementing-native-menus-in-flexair-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

