<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-24205080</id><updated>2012-01-06T14:27:34.494-08:00</updated><category term='air flash'/><category term='flash'/><category term='seo flash google indexing yahoo'/><category term='previous'/><category term='as3 designPattern'/><category term='flash olpc gnash linux'/><category term='player'/><category term='as3 flash'/><title type='text'>Flash Focus</title><subtitle type='html'>This blog is a resource for the flash development community, feel free to post about the following:

* New features of flash
* Coding practices in flash
* Interesting sites or examples using flash
* Bugs in flash you have come across
* Requests for help with coding.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>andybiggs</name><uri>http://www.blogger.com/profile/07531695099280390627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24205080.post-4767338201045578368</id><published>2011-02-14T10:16:00.000-08:00</published><updated>2011-02-14T10:38:18.357-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3 flash'/><title type='text'>Inconsistencies with Flash and HTTP status codes.</title><content type='html'>I ran into an interesting issue today where my Flash application was not working with a back-end &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;RESTful&lt;/span&gt; service consistently across browsers and platforms. One of the nice things about Flash is that it does for the most part, run extremely well across a vast array of environments. To my surprise, I found an exception:&lt;br /&gt;&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RESTful&lt;/span&gt; service that my Flash app is consuming is one that is being custom built by a third party for my application. If a successful transaction takes place, I get an XML response with some useful data. If the transaction was unsuccessful, I get a predictable XML response containing an error code and message that are specific to the application. However, the back-end developer is using HTTP status codes in the range of 400 and greater for errors. The Flash documentation indicates that when using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;URLLoader&lt;/span&gt; class, its data property will only be populated if the transaction completes successfully. Its &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;HTTPStatusEvent&lt;/span&gt; event is considered to be unreliable due to inconsistencies across browsers. Therefore, I'm only really listening for Event.COMPLETE, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;IOErrorEvent&lt;/span&gt;.IO_ERROR and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SecurityErrorEvent&lt;/span&gt;.SECURITY_ERROR.&lt;br /&gt;&lt;br /&gt;Whenever I get an error response, (which for me could happen if a session is expired or if bad data is passed through...), I get valid XML back with a custom status code within the XML itself, and an HTTP status code of say, 405. A successful response would have an HTTP status code of 200. Event.COMPLETE is only triggered when the HTTP status code is 200, which means OK. Anything else triggers the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IOErrorEvent&lt;/span&gt;.IO_ERROR event. What I was doing is putting try, catch around my attempt to access the error XML. This way I could catch if the response wasn't even valid XML and show some generic message. Then within the try block, I had a switch statement that would look for the custom status codes within my XML so that I could show more specific feedback to the user, like  "Your session has timed out, click here to sign in again".&lt;br /&gt;&lt;br /&gt;This all worked actually. I develop on OS X 10.6 and was using FireFox 3.6.x. For some reason though, my builds, when deployed to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;dev&lt;/span&gt; server, were not working for some of my other team mates. We confirmed that it wasn't their cache, and that the deployment was intact and was indeed the latest build. They were also using FireFox but on Windows 7. Through the use of some packet sniffers we were able to confirm that in my environment I was getting past the first web service call and my colleague was not. I then tested again in OS X but with the latest version of Safari. In Safari I had the same failure as my colleague and was able to confirm that the data property of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;URLRequest&lt;/span&gt; object was not being populated in my IO_ERROR handler (whereas for me, in FireFox it was).&lt;br /&gt;&lt;br /&gt;The solution unfortunately must be that I had to get the back-end web service developer to modify his logic so that all application errors that would return error related XML for the application, be returned with an HTTP status code of 200. I have consumed XML from many &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;RESTful&lt;/span&gt; services in the past and have never run into this issue in all my years. I believe I have just taken for granted that all these other services always return an HTTP status code of 200 when they want to return you useful XML error messages.&lt;br /&gt;&lt;br /&gt;Hopefully this saves someone else some time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4767338201045578368?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4767338201045578368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4767338201045578368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4767338201045578368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4767338201045578368'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2011/02/inconsistencies-with-flash-and-http.html' title='Inconsistencies with Flash and HTTP status codes.'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-924127982308038840</id><published>2011-02-09T11:47:00.000-08:00</published><updated>2011-02-09T11:49:02.788-08:00</updated><title type='text'>My thoughts on AS3 Signals</title><content type='html'>Here’s my evaluation of &lt;a href="https://github.com/robertpenner/as3-signals/wiki"&gt;Signals&lt;/a&gt;, and I’ll preface this by conceding that I  haven’t actually tried them in a project to fully appreciate the amount  of code savings. &lt;p&gt;1. I like the simplicity of the API. It’s different than the standard  but at least it’s clear (probably more so than the standard). I like  the addOnce feature a lot but it’s also pretty easy to explicitly remove  my event listeners. I just copy the foo.addEventListener line and paste  it where it needs to be removed, and erase the ‘add’ part and rename it  to ‘remove’. That’s not a lot of typing. Admittedly though one can  forget to do it at all, and it does add more code to your project  overall. Big deal? Doesn’t seem like it.&lt;/p&gt; &lt;p&gt;2. I don’t see a huge code writing savings in the context that most  coders use an IDE that helps them generate the extra boilerplate code.  I’m either going to have my IDE create an Event subclass or I’m going to  copy and paste an old one and tweak a couple parts of it by hand. That  seems to me like just as much of a time saver as the brevity that  Signals offers.&lt;/p&gt; &lt;p&gt;3. It’s really fast.&lt;/p&gt; &lt;p&gt;So, in summary, I see a lot of trivial benefits that don’t really  persuade me to change a current project started with regular events or  to introduce something that might seem esoteric to a future developer  that needs to take over my code. #3 though seems to be the most  unadvertised feature that is also the strongest argument. 4-13x faster  is a pretty damn strong argument. Still – it depends on your project  right? If your project won’t appreciate the speed benefits then maybe  it’s better to stick with the conventional approach. &lt;/p&gt; &lt;p&gt;So, for me I think I’ll definitely reserve the use of Signals for a project with a more intense level of event dispatching.&lt;/p&gt;&lt;p&gt;I'm interested in your comments!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-924127982308038840?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/924127982308038840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=924127982308038840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/924127982308038840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/924127982308038840'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2011/02/my-thoughts-on-as3-signals.html' title='My thoughts on AS3 Signals'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4936240818955670325</id><published>2009-08-31T12:56:00.001-07:00</published><updated>2009-08-31T12:58:15.711-07:00</updated><title type='text'>Flash player 10 for Android - progress update</title><content type='html'>A nice progress update from Adobe on their commitment to bring the full Flash Player 10 to mobile – demoing the HTC Hero device running Flash Player 10 for Android.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/devices/articles/htchero.html"&gt;http://www.adobe.com/devnet/devices/articles/htchero.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4936240818955670325?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4936240818955670325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4936240818955670325' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4936240818955670325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4936240818955670325'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2009/08/flash-player-10-for-android-progress.html' title='Flash player 10 for Android - progress update'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-201303062016440795</id><published>2009-08-14T10:48:00.000-07:00</published><updated>2009-08-14T10:50:44.853-07:00</updated><title type='text'>Flex 3 doesn't support Vector type as bindable dataprovider</title><content type='html'>Yesterday I tried using a &lt;a href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Vector.html"&gt;Vector&lt;/a&gt; as the dataprovider of a &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=dpcontrols_5.html"&gt;ComboBox&lt;/a&gt; control. Flex 3 doesn't like this FYI so don't bother trying it. I'm pretty sure in Gumbo this'll work fine though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-201303062016440795?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/201303062016440795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=201303062016440795' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/201303062016440795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/201303062016440795'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2009/08/flex-3-doesnt-support-vector-type-as.html' title='Flex 3 doesn&apos;t support Vector type as bindable dataprovider'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6487969375412079977</id><published>2009-06-04T16:39:00.001-07:00</published><updated>2009-06-04T17:15:30.078-07:00</updated><title type='text'>Targeting Flash Player 10 for AIR projects with Flex 3.3</title><content type='html'>I got a project passed to me from Fraser and it was in AIR and Flex 3.3 for Flash Player 10. For some reason he could compile it but I was getting errors. This is after setting up my Eclipse (with FlexBuilder 3 plugin) for Flex SDK 3.3&lt;br /&gt;&lt;br /&gt;Eventually it was determined that I needed to upgrade my FlexBuilder 3 plugin (not to 4!), to a slightly higher minor version because 3.02 introduces support for Flash 10. So, I launched my Adobe Updater application (you can search for it on Spotlight on a mac) and sure enough, immediately it told me there is an update for FlexBuilder. I ran that and my project was then able to compile. Hope this helps someone. Thanks for the frantic Googling Fraser!&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/sdk32_fb302.html"&gt;http://www.adobe.com/devnet/flex/articles/sdk32_fb302.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/sdk32_fb302.html"&gt;http://www.adobe.com/devnet/flex/articles/sdk32_fb302.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;&lt;br /&gt;Andrew&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6487969375412079977?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6487969375412079977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6487969375412079977' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6487969375412079977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6487969375412079977'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2009/06/targeting-flash-player-10-for-air.html' title='Targeting Flash Player 10 for AIR projects with Flex 3.3'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6223730514689302710</id><published>2008-09-17T15:09:00.000-07:00</published><updated>2008-09-17T15:49:06.383-07:00</updated><title type='text'>Elegant Code Snippets in blogger.</title><content type='html'>This might not be Actionscript/flash related but I thought I would explain how we got our code snippets to look so nice.&lt;br /&gt;&lt;br /&gt;Searching the internet I ran into &lt;a href="http://code.google.com/p/syntaxhighlighter/"&gt; syntaxhighlighter&lt;/a&gt; which is a plugin that allows you to create nicer code snippets, unfortunately there is no style for Actionscript yet, but the Java highlighting style works quite nicely for AS snippets.&lt;br /&gt;&lt;br /&gt;Quick instructions.&lt;br /&gt;&lt;br /&gt;1. download the rar file from the google.code page (link above).&lt;br /&gt;2. Unrar and upload to your own server under /syntaxhighlighter/&lt;br /&gt;3. Add this to your blog template, just before the closing &amp;lt;/body&amp;gt; tag.&lt;br /&gt;&lt;pre name="code" class="XML"&gt;&lt;br /&gt;&amp;lt;!-- START OF SyntaxHighlighter --&amp;gt;&lt;br /&gt;&amp;lt;link href='http://www.YOUR_SITE.com/syntaxhighlighter/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shCore.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushCpp.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushCSharp.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushCss.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushDelphi.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushJava.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushJScript.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushPhp.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushPython.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushRuby.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushSql.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushVb.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src='http://www.YOUR_SITE.com/syntaxhighlighter/shBrushXml.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script class='javascript'&amp;gt;  &lt;br /&gt;//&amp;lt;![CDATA[  &lt;br /&gt;function FindTagsByName(container, name, Tag)  &lt;br /&gt;{  &lt;br /&gt; var elements = document.getElementsByTagName(Tag);  &lt;br /&gt; for (var i = 0; i &amp;lt; elements.length; i++)  &lt;br /&gt; {&lt;br /&gt;  if (elements[i].getAttribute("name") == name)&lt;br /&gt;  {&lt;br /&gt;   container.push(elements[i]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;var elements = [];  &lt;br /&gt;FindTagsByName(elements, "code", "pre");  &lt;br /&gt;FindTagsByName(elements, "code", "textarea");  &lt;br /&gt;   &lt;br /&gt;for(var i=0; i &amp;lt; elements.length; i++) {  &lt;br /&gt; if(elements[i].nodeName.toUpperCase() == "TEXTAREA") {  &lt;br /&gt;  var childNode = elements[i].childNodes[0];  &lt;br /&gt;  var newNode = document.createTextNode(childNode.nodeValue.replace(/&amp;lt;br\s*\/?&amp;gt;/gi,'\n'));  &lt;br /&gt;  elements[i].replaceChild(newNode, childNode);&lt;br /&gt; }&lt;br /&gt; else if(elements[i].nodeName.toUpperCase() == "PRE") {  &lt;br /&gt;  brs = elements[i].getElementsByTagName("br");  &lt;br /&gt;  for(var j = 0, brLength = brs.length; j &amp;lt; brLength; j++) {  &lt;br /&gt;   var newNode = document.createTextNode("\n");  &lt;br /&gt;   elements[i].replaceChild(newNode, brs[0]);  &lt;br /&gt;  }&lt;br /&gt; }  &lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;//clipboard does not work well, no line breaks  &lt;br /&gt;//dp.SyntaxHighlighter.ClipboardSwf = "http://www.YOUR_SITE.com/syntaxhighlighter/clipboard.swf";  &lt;br /&gt;dp.SyntaxHighlighter.HighlightAll("code");  &lt;br /&gt;//]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;!-- END OF SyntaxHighlighter --&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Replace www.YOUR_SITE.com for your actual URL.&lt;br /&gt;5. Post something following the &lt;a href="http://code.google.com/p/syntaxhighlighter/wiki/Usage"&gt;syntaxhighlighter usage&lt;/a&gt;&lt;br /&gt;6. You are Done.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6223730514689302710?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6223730514689302710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6223730514689302710' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6223730514689302710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6223730514689302710'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/09/elegant-code-snippets-in-blogger.html' title='Elegant Code Snippets in blogger.'/><author><name>Rodrigo Gómez-Tagle A.</name><uri>http://www.blogger.com/profile/13503960502349746554</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6278301047561695472</id><published>2008-09-17T13:07:00.000-07:00</published><updated>2008-09-17T14:45:35.468-07:00</updated><title type='text'>FlexBuilder bug found today with event metadata</title><content type='html'>Found out the hard way today that you can't use camel case (as you should be able to) in event metadata in AS3 / MXML classes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Here's my event class:&lt;/b&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt;package ca.abcd.button&lt;br /&gt;{&lt;br /&gt; import flash.events.Event;&lt;br /&gt;&lt;br /&gt; public class MyButtonEvent extends Event&lt;br /&gt; {&lt;br /&gt;  public static const CLICK:String = "clickMyButton";&lt;br /&gt;  public function PlaylistEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)&lt;br /&gt;  {&lt;br /&gt;   super(type, bubbles, cancelable);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Here's a snippet of a class that I want event metadata for. You should be able to define events that get dispatched from the class like this:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[Event(name="&lt;/code&gt;&lt;code&gt;clickMyButton&lt;/code&gt;&lt;code&gt;", type="ca.abcd.button.MyButtonEvent")]&lt;br /&gt;public class Playlist {&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;but when code hinting, for &lt;code&gt;addEventListener&lt;/code&gt;, when you expect to see MyButtonEvent.CLICK in the list of event options, you get MyButtonEvent.CLICK_MY_BUTTON. What you'll find is you get underscores replacing any place in the event's string value where camel case is used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Known Bug&lt;/span&gt;&lt;br /&gt;Turns out it's a known &lt;a href="http://bugs.adobe.com/jira/browse/FB-9088"&gt;FlexBuilder parsing bug&lt;/a&gt; and you can work around it by not using camel case and using underscores instead to separate words in your event value. You'll see I added a note in the bug report that it's still a problem in FlexBuilder 3.1. Hopefully they fix this soon, but otherwise, using underscores, no biggie, just a big of a waste of time, grr.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As a side note, if you're wondering what the problem is with just doing this inside of MyButtonEvent:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public static const CLICK:String = "click"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The reason is that MouseEvent.CLICK is also defined as "click" and so you'll get a conflict, catching events you don't mean to. The workaround has to then be in MyButtonEvent,&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public static const CLICK_MY_BUTTON:String = "clickMyButton"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public static const CLICK_MY_BUTTON:String = "click_my_button"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public static const CLICK_MY_BUTTON:String = "CLICK_MY_BUTTON"&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6278301047561695472?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6278301047561695472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6278301047561695472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6278301047561695472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6278301047561695472'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/09/flexbuilder-bug-found-today-with-even.html' title='FlexBuilder bug found today with event metadata'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7436127045668001010</id><published>2008-09-13T17:29:00.000-07:00</published><updated>2008-09-15T13:28:29.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3 designPattern'/><title type='text'>Using namespaces to implement the state design pattern</title><content type='html'>I was reading up on the namespaces feature of AS3, trying to imagine a use for them (outside of the XML context), and decided that they would be useful for implementing the &lt;a href="http://en.wikipedia.org/wiki/State_pattern"&gt;state design pattern&lt;/a&gt;. For that design pattern I used to use external state classes. Now, unless my various implementations for an API require a lot of code, it's cleaner to put the various implementations as same-named functions in the same class, differentiated with namespaces. Here's the classic gumball machine example that illustrates the state pattern that I implemented with the help of namespaces.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;TryGumballMachine.as&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package {&lt;br /&gt;&lt;br /&gt;import ca.abcd.gumballmachine.GumballMachineModel;&lt;br /&gt;&lt;br /&gt;public class TryGumballMachine extends Sprite&lt;br /&gt;{&lt;br /&gt;public function TryGumballMachine()&lt;br /&gt;{ &lt;br /&gt; var gumballMachine:GumballMachine = new GumballMachine();&lt;br /&gt; gumballMachine.turnHandle();&lt;br /&gt; gumballMachine.insertCoin();&lt;br /&gt; gumballMachine.insertCoin();&lt;br /&gt; gumballMachine.turnHandle();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The above will trace out the following:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Can't turn handle, you must insert a coin first!&lt;br /&gt;One coin inserted. Turn the handle to get a gumball.&lt;br /&gt;You can't put a coin in the machine right now because there's already one there. Turn the handle then add another coin.&lt;br /&gt;I hereby give you a gumball, don't forget to brush your teeth!&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;GumballMachine.as&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package ca.abcd.gumballmachine&lt;br /&gt;{&lt;br /&gt;public class GumballMachine&lt;br /&gt;{&lt;br /&gt;private namespace hasCoin;&lt;br /&gt;private namespace noCoin;&lt;br /&gt;&lt;br /&gt;use namespace noCoin;&lt;br /&gt;private var _state:Namespace;&lt;br /&gt;&lt;br /&gt;public function GumballMachine()&lt;br /&gt;{&lt;br /&gt; _state = noCoin;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function turnHandle():void {&lt;br /&gt; _state::turnHandle();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function insertCoin():void {&lt;br /&gt; _state::insertCoin();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;noCoin function turnHandle():void {&lt;br /&gt; trace("Can't turn handle, you must insert a coin first!");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;hasCoin function turnHandle():void {&lt;br /&gt; trace("I hereby give you a gumball, don't forget to brush your teeth!");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;noCoin function insertCoin():void {&lt;br /&gt; _state = hasCoin;&lt;br /&gt; trace("One coin inserted. Turn the handle to get a gumball.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;hasCoin function insertCoin():void {&lt;br /&gt; trace("You can't put a coin in the machine right now because there's already one there. Turn the handle then add another coin.");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7436127045668001010?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7436127045668001010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7436127045668001010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7436127045668001010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7436127045668001010'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/09/using-namespaces-to-implement-state.html' title='Using namespaces to implement the state design pattern'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-5485491592796208199</id><published>2008-09-09T21:01:00.000-07:00</published><updated>2008-09-09T21:10:26.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash olpc gnash linux'/><title type='text'>Open source Flash player called Gnash</title><content type='html'>Did you know there is an open source version of the Flash Player? I was doing some self interest research into the &lt;a href="http://laptop.org/"&gt;One Laptop Per Child (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;OLPC&lt;/span&gt;)&lt;/a&gt; laptop to see what it is like (I'm working getting an &lt;a href="http://wiki.laptop.org/go/VMWare#Pre-converted_Images"&gt;emulated version&lt;/a&gt; running on my Mac with &lt;a href="http://vmware.com/products/fusion/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;VMware&lt;/span&gt; Fusion&lt;/a&gt;). I was curious to know basically, if I wanted to create educational/useful Flash content for people in developing countries would they be able to view it. The short answer appears to be yes. The longer answer is that they'll have to know how to download the Flash Player like in the old days. However, out of the box, some of your Flash may work fine anyway.&lt;br /&gt;&lt;br /&gt;Because of licensing restrictions on the &lt;a href="http://www.redhat.com/"&gt;Red Hat Linux&lt;/a&gt; operating system that ships with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;OLPC&lt;/span&gt;, the actual Flash Player could not be used (or would have been cost prohibitive I guess of their goal of one or two hundred dollars per unit). Instead they ship with &lt;a href="http://www.gnu.org/software/gnash/"&gt;Gnash&lt;/a&gt;, which purports to play Flash 7 content pretty well and even some Flash 8 and 9 stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-5485491592796208199?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/5485491592796208199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=5485491592796208199' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5485491592796208199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5485491592796208199'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/09/open-source-flash-player-called-gnash.html' title='Open source Flash player called Gnash'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-2482685430404311189</id><published>2008-07-04T13:44:00.000-07:00</published><updated>2008-07-04T13:45:49.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo flash google indexing yahoo'/><title type='text'>Google and Yahoo indexing Flash (SWF) content like never before. Finally!</title><content type='html'>To me this has huge implications and to some degree (time will tell), will get a monkey off our backs in terms of how flash is great but not great for SEO. Of course we had workarounds but I'm not sure that they were 100% effective and the added time/cost overhead. Not anymore!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html"&gt;click here for the article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-2482685430404311189?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/2482685430404311189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=2482685430404311189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2482685430404311189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2482685430404311189'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/07/google-and-yahoo-indexing-flash-swf.html' title='Google and Yahoo indexing Flash (SWF) content like never before. Finally!'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-5606310552501435527</id><published>2008-05-08T08:36:00.000-07:00</published><updated>2008-07-04T13:46:23.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='air flash'/><title type='text'>Creating your AIR installer without impurities</title><content type='html'>I recently had an issue with my Adobe AIR project where the application installer I created (myInstaller.air) stopped working. I could create it, but it complained of corruption when I tried to run it. There was really no explanation why.&lt;br /&gt;&lt;br /&gt;Here's what I discovered after some trial and error to weed out the problem:&lt;br /&gt;&lt;br /&gt;I had downloaded a third party skin for the app from &lt;a href="scalenine.com"&gt;scalenine.com&lt;/a&gt;, which consisted of a swf and some css. The skin itself was fine, I could see it working in the test environment. In addition to the skin files, it also came with a hyperlink file that linked back to the author's Website. I believe it was something like MyWebsite.webloc. The problem I was experiencing was due to the installer including the .webloc file. When you generate your .air installer file from FlexBuilder 3, you choose which files should be contained in it. I had selected the root folder of the skin package.&lt;br /&gt;&lt;br /&gt;Obviously a .webloc file will have nothing to do with Adobe AIR, but surprisingly it acted as a pathogen rather than a benign file.&lt;br /&gt;&lt;br /&gt;So, if this happens to you, look for files that have nothing to do with your app, and don't include them in your export!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-5606310552501435527?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/5606310552501435527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=5606310552501435527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5606310552501435527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5606310552501435527'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/05/creating-your-air-installer-without.html' title='Creating your AIR installer without impurities'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-8322260646303173639</id><published>2008-03-04T09:36:00.001-08:00</published><updated>2008-03-04T10:19:38.817-08:00</updated><title type='text'>relaying non-bubbling events</title><content type='html'>Something I thought should work but had trouble figuring out was just revealed to me today. Say i have a couple of 'nested' objects, but they're NOT display objects, and I want to 'bubble' the event up through the parents. Of course conceptually real bubbling will work in this situation if the parents were display objects, but if they're not it's still possible without too much code.&lt;br /&gt;&lt;br /&gt;Here's the example of what we want to work, made up of classes MyClassA and MyClassB and event class MyEvent:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class MyClassA {&lt;br /&gt;    private var b:MyClassB;    &lt;br /&gt;&lt;br /&gt;    public function MyClassA():void{&lt;br /&gt;        this.b = new MyClassB();&lt;br /&gt;        this.addEventListener(MyEvent.START, relayEvent);&lt;br /&gt;        this.addEventListener(MyEvent.PROGRESS, relayEvent);&lt;br /&gt;        this.addEventListener(MyEvent.FINISH, relayEvent);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function start():void {&lt;br /&gt;        this.b.start();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private function relayEvent(event:MyEvent):void {&lt;br /&gt;        //relay same event.&lt;br /&gt;        dispatchEvent(event);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class MyClassB {&lt;br /&gt;    public function MyClassB():void{&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function start():void {&lt;br /&gt;         var event:MyEvent = new MyEvent(MyEvent.START);&lt;br /&gt;&lt;br /&gt;        dispatchEvent(event);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyEvent extends Event{&lt;br /&gt;    public const START:String = "start";    &lt;br /&gt;    public const PROGRESS:String = "progress";    &lt;br /&gt;    public const FINISH:String = "finish";    &lt;br /&gt;&lt;br /&gt;    public class MyEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false ) {&lt;br /&gt;        super(type,bubbles, cancelable);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the above we're trying to expose several of MyClassB's events (which could be of different event class types) to observers of MyClassA, whom we do not want to have to know about MyClassB.&lt;br /&gt;&lt;br /&gt;In your observing class picture the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class MyObserver {&lt;br /&gt;    public function MyObserver():void {&lt;br /&gt;        var myObjA:MyClassA = new MyClassA();&lt;br /&gt;        myObjA.addEventListener(MyEvent.START, onStart);&lt;br /&gt;        myObjA.start();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private function onStart(event:MyEvent):void {&lt;br /&gt;        //do something useful&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The problem is, that when you run this you'll get a type coersion error at MyObserver#onStart in relayEvent. This is because the MyEvent object in MyClassA#relayEvent gets changed from type MyEvent to Event.&lt;br /&gt;&lt;br /&gt;The solution is to create clone methods in each of your custom event classes that duplicate the class and return the same type. Behind the scenes, the Flash Player is calling clone, but since it doesnt' exist, it calls the super (Event#clone()) which returns its own type, Event. Here's my custom event class again with the clone method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class MyEvent extends Event{&lt;br /&gt;    public const START:String = "start";    &lt;br /&gt;    public const PROGRESS:String = "progress";    &lt;br /&gt;    public const FINISH:String = "finish";    &lt;br /&gt;&lt;br /&gt;    public class MyEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false ) {&lt;br /&gt;        super(type,bubbles, cancelable);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function clone():MyEvent {&lt;br /&gt;        var clone:MyEvent = new MyEvent(this.type, this.bubbles, this.cancelable);&lt;br /&gt;        return clone;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-8322260646303173639?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/8322260646303173639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=8322260646303173639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8322260646303173639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8322260646303173639'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/03/relaying-non-bubbling-events.html' title='relaying non-bubbling events'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6239374065985944903</id><published>2008-02-24T12:32:00.000-08:00</published><updated>2008-02-24T12:47:34.445-08:00</updated><title type='text'>Multiple gotoAndPlay() considered harmful</title><content type='html'>When you are programming games (or all apps for that matter), one of the most important things is to make sure you maintain the states properly.  By that I mean you do not want your game state to be in a state that you don't expect it to be.  For instance, if your character is in running state, it shouldn't suddenly switch to hiding state without you knowing it.  &lt;br /&gt;&lt;br /&gt;Having multiple gotoAndPlay() in your code can corrupt your state very easily.  It is like having the ability to modify a global variable anywhere you like, and it can create bugs that are hard to track down.  Essentially, that's what gotoAndPlay() is -- it modifies the playhead info, and by using gotoAndPlay in more than one place, you have turned your playhead into a global variable.&lt;br /&gt;&lt;br /&gt;It's for this reason that you should try to have only one place where gotoAndPlay() is called by putting it into a centralized function in your engine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6239374065985944903?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6239374065985944903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6239374065985944903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6239374065985944903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6239374065985944903'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/02/multiple-gotoandplay-considered-harmful.html' title='Multiple gotoAndPlay() considered harmful'/><author><name>boon</name><uri>http://www.blogger.com/profile/02604408344988840640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7763426319616204813</id><published>2008-02-17T18:14:00.000-08:00</published><updated>2008-02-24T12:31:37.910-08:00</updated><title type='text'>var motto:Array = [ "rock", "on", ];</title><content type='html'>When adding/removing an element in an array, how many times do you find yourself having to deal with the nuisance of adding/removing the comma of the last array element?  Well not anymore.  In AS3, you are allowed to leave your comma for the last element in.  Perl coders have been able to do this for years, finally Actionscript coders can too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7763426319616204813?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7763426319616204813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7763426319616204813' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7763426319616204813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7763426319616204813'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/02/var-mottoarray-rock-on.html' title='var motto:Array = [ &quot;rock&quot;, &quot;on&quot;, ];'/><author><name>boon</name><uri>http://www.blogger.com/profile/02604408344988840640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-1795672899377512550</id><published>2008-02-11T09:24:00.001-08:00</published><updated>2008-02-11T09:24:28.037-08:00</updated><title type='text'>LocalConnection Gotcha</title><content type='html'>&lt;p&gt;It's funny how you use things every day and then suddenly things don't work. Everything looks good, but things just do not work. I Came across this the other day when working with an Omniture component. Since Omniture has not released an AS3 version of their component we need to use the LocalConnection to talk between our compiled Flash movies and the Omniture file.&lt;/p&gt;  &lt;p&gt;This worked well until I was creating a standalone file that is to embedded in different domains. For some reason the LocalConnection was not kicking in and I was at a loss, until I rtfm, that is.&lt;/p&gt;  &lt;p&gt;As a security measure LocalConnection appends the connection string with the value of the superdomain, unless you start the connection name with an underscore. For example, your connection name &amp;quot;foo&amp;quot; will become &amp;quot;superdomain:foo&amp;quot; inside the Flash Player, but &amp;quot;_foo&amp;quot; will remain &amp;quot;_foo&amp;quot;. Of course, the latter will only work when trying to connect to Flash files hosted on other domains.&lt;/p&gt;  &lt;p&gt;My head has not stopped bleeding from all of that banging, but the brick wall has been rebuilt. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-1795672899377512550?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/1795672899377512550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=1795672899377512550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/1795672899377512550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/1795672899377512550'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/02/localconnection-gotcha.html' title='LocalConnection Gotcha'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-8578558684894134219</id><published>2008-01-23T16:18:00.001-08:00</published><updated>2008-01-23T16:25:40.790-08:00</updated><title type='text'>Injecting Frame Scripts</title><content type='html'>&lt;p&gt;Over the past couple of months I have been toying with the Flex SDK, creating Flash files without a .fla file, except in order to associate library items with classes. This has been going along swimmingly until today when I noticed that frame scripts inside the library items were being stripped out. Whilst this makes perfect sense (don't want code conflicts) I could not see anyway of putting my &lt;code&gt;stop()&lt;/code&gt; scripts back in.&lt;/p&gt;  &lt;p&gt;As it turns out Flash has an undocumented feature to get around this called &lt;/p&gt;  &lt;p&gt;&lt;code&gt;addFrameScript(frame:int,method:Function)&lt;/code&gt; &lt;/p&gt;  &lt;p&gt;in whichthe parameters can be repeated.&lt;/p&gt;  &lt;p&gt;This enables you to reinsert any stop functions, etc. back in. As a side note the frame argument is zero-based, so if you wish to put a stop function on frame 1 and frame 10 you would write: &lt;/p&gt;  &lt;p&gt;&lt;code&gt;this.addFrameScript(0,stop, 9, stop);&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Happy injecting!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-8578558684894134219?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/8578558684894134219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=8578558684894134219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8578558684894134219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8578558684894134219'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/01/injecting-frame-scripts.html' title='Injecting Frame Scripts'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-2108653447513788420</id><published>2008-01-15T17:27:00.000-08:00</published><updated>2008-01-15T18:41:17.529-08:00</updated><title type='text'>as3Query</title><content type='html'>Something that could be really sweet just blipped on the radar today. It's a port of jQuery to as3 called ... as3Query:&lt;br /&gt;&lt;a href="http://http://tech.nitoyon.com/blog/2008/01/as3query_alpha.html"&gt;http://tech.nitoyon.com/blog/2008/01/as3query_alpha.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those of you not totally familiar with jQuery:&lt;br /&gt;&lt;a href="http://jquery.com/"&gt;http://jquery.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What might I use it for? How about grabbing all videos in a media carousel using:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$("#mediaCarousel&gt;Video")&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-2108653447513788420?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/2108653447513788420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=2108653447513788420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2108653447513788420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2108653447513788420'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2008/01/as3query.html' title='as3Query'/><author><name>Ryan Betts</name><uri>http://www.blogger.com/profile/12466935049810480818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4339751244723136423</id><published>2007-11-11T02:36:00.000-08:00</published><updated>2007-11-12T17:57:17.805-08:00</updated><title type='text'>The Evil Mr. Singleton</title><content type='html'>In my not very humble opinion, the singleton pattern is the worst pattern ever, and the fact that it is discussed in many books that talk about patterns make people think that it's a good thing (which is a flawed thinking).  To make matters worse, almost no pattern book talks about why singleton is bad for you.  In a way the pattern books out are not unlike that of a phone book - you get a list of phone numbers, but it doesn't tell you the guy who owns the number likes to molest Flash developers and that you should avoid calling the number!&lt;br /&gt;&lt;br /&gt;This reminds me of how beginners in OOP would always fall into a "how can I make my code fit into an inheritance model" state of mind.&lt;br /&gt;&lt;br /&gt;There are a few reasons why you should never use singleton in your code, and most definitely not in your framework if you happen to write one.  Here are some of the reasons I can think of off the top of my little head:&lt;br /&gt;&lt;br /&gt;1) The syntax is hideous.  There is no way to hide the fact that the object you are dealing with is a singleton.&lt;br /&gt;&lt;br /&gt;2) The standard in naming a singleton is non-existent.  Different people name the instance accessor differently. I have seen code that use getInstance(), getInst(), instance(), etc.&lt;br /&gt;&lt;br /&gt;3) What should you do when you inherit a class that is a singleton?&lt;br /&gt;&lt;br /&gt;4) If you are implement this in AS3, you have the additional problem of not being able to declare private constructor to prevent direct object instantiation on your class.&lt;br /&gt;&lt;br /&gt;5) It makes your class less tolerant to change in requirements.  What if one day someone would like to instantiate multiple instance of your class?&lt;br /&gt;&lt;br /&gt;6) Making an object singleton is almost the same act as declaring a global variable.  Anyone can access your object from anywhere in your application.  This convenience allows you to create unnecessary coupling to your application more easily and irresponsibly.&lt;br /&gt;&lt;br /&gt;7) Code that uses singleton must take care of destroying it or resetting it with a custom destroy method where appropriate.  For example, if you are implementing a Restart feature for your game, you want to make sure you are getting a brand new copy of the singleton object whenever the game restarted.&lt;br /&gt;&lt;br /&gt;8) Most importantly, enforcing the single-ness should not be done at the object level (especially for the ones that can be used across multiple applications).  This is inherently a policy-based issue, and should be dealt at the application level (through the use of a policy-based class or passing your objects around), not at the object level.&lt;br /&gt;&lt;br /&gt;I sincerely hope you will think twice before you start creating your next singleton.  Remember, no one wants to be single forever!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4339751244723136423?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4339751244723136423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4339751244723136423' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4339751244723136423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4339751244723136423'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/11/end-of-singleton.html' title='The Evil Mr. Singleton'/><author><name>boon</name><uri>http://www.blogger.com/profile/02604408344988840640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6334851488961977626</id><published>2007-11-07T16:38:00.001-08:00</published><updated>2007-11-07T16:47:07.354-08:00</updated><title type='text'>This is a quick test</title><content type='html'>&lt;p&gt;Microsoft have finally released their Live products from beta (&lt;a title="http://www.windowslive.com/" href="http://www.windowslive.com/"&gt;http://www.windowslive.com/&lt;/a&gt;). Whilst this is not something that I would normally blog about, amongst the products released is Live Writer, which enables you to blog from your desktop. This is the first post that I have made using the new application.&lt;/p&gt;  &lt;p&gt;Fingers crossed it arrives!&lt;/p&gt;  &lt;p&gt;[Update - it did! Very exciting Yay!]&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6334851488961977626?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6334851488961977626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6334851488961977626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6334851488961977626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6334851488961977626'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/11/this-is-quick-test.html' title='This is a quick test'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-5356984797683694071</id><published>2007-11-07T16:22:00.000-08:00</published><updated>2007-11-07T16:52:25.090-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Flash Tracer for FireFox</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;Flash Tracer is a great extension to FireFox that allows you to view traces in the browser of any swf file. Here's how to set it up.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;1. Download the Flash Tracer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3469"&gt;&lt;span style="font-family:trebuchet ms;"&gt;https://addons.mozilla.org/en-US/firefox/addon/3469&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;2. If not already created, use notepad to create flashlog.txt file in the following location:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;C:\Documents and Settings\[username]\Application Data\Macromedia\Flash Player\Logs\flashlog.txt&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;3. If not already created , use notepad to create mm.cfg file in the following location:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;C:\Documents and Settings\[username]\mm.cfg&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;4. Edit mm.cfg file with the following content:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;TraceOutPutFileName=C:\Documents and Settings\[username]\Application Data\Macromedia\Flash&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;Player\Logs\flashlog.txt&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;ErrorReportingEnable=1&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-family:trebuchet ms;font-size:100%;"  &gt;TraceOutputFileEnable=1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(204, 204, 204);font-size:100%;" &gt;MaxWarnings=0&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;5. Remember to keep your traces clean because we can all see them 8)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-5356984797683694071?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/5356984797683694071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=5356984797683694071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5356984797683694071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/5356984797683694071'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/11/flash-tracer-for-firefox.html' title='Flash Tracer for FireFox'/><author><name>groovyjoe</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6322230479209167955</id><published>2007-11-05T10:54:00.000-08:00</published><updated>2007-11-05T11:04:19.893-08:00</updated><title type='text'>Reading And Writing Drupal With Flex</title><content type='html'>The writers of this blog including me, are typically in the business of creating high end custom RIA work. I think it's safe to say for this reason we haven't done a lot with template driven sites or CMS engines like Drupal. I don't want to step on anyone's toes  about Drupal because I don't have much experience with it. My initial impression though, is that it's probably one of the best if not the best template type content management systems out there and it's easily extensible and configurable.&lt;br /&gt;&lt;br /&gt;A developer friend of mine who is a big proponent of Drupal, who garners most of his income from building Druapl sites referred me this article:&lt;br /&gt;&lt;br /&gt;http://devzone.zend.com/article/2660-Reading-And-Writing-Drupal-With-Flex&lt;br /&gt;&lt;br /&gt;Here's my thinking:&lt;br /&gt;&lt;br /&gt;I still don't really have a big interest in Drupal type sites given the type of work I prefer to do. However, as I'm into using Flex and AS3 as mediums for creating RIA work, Drupal may represent a source of revenue from Drupal-heads who want custom modules built for their Drupal sites. I'm going to be doing some experimenting with this with my friend and report back on my findings. My hope is that given the right exposure within the Drupal community there will be a demand for repeat specialty Flash modules, built in Flex or even just AS3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6322230479209167955?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6322230479209167955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6322230479209167955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6322230479209167955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6322230479209167955'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/11/reading-and-writing-drupal-with-flex.html' title='Reading And Writing Drupal With Flex'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7744649809702277654</id><published>2007-10-25T12:06:00.000-07:00</published><updated>2007-10-25T12:13:53.490-07:00</updated><title type='text'>FlashVars and Document Class files</title><content type='html'>Back in the old days (AS 2) FlashVars written in the HTML page were always placed into the root of the flash file. So far, so good. Today I needed to put a FlashVar into a Flash file that uses a Document Class as its root class. Naturally enough I assumed that the FlashVar would simply set an instance variable, but this kept on coming back as null.&lt;br /&gt;&lt;br /&gt;Apparently, in order to access a FlashVar in AS3 you need to check the Document Class' loaderInfo property. This contains all sorts of useful information about the swf, including any parameters set in the HTMl, which can be accessed using&lt;br /&gt;&lt;code&gt;this.loaderInfo.parameters.&lt;i&gt;variable&lt;/i&gt;&lt;/code&gt;&lt;br /&gt;where &lt;i&gt;variable&lt;/i&gt; is the name of the FlashVar you are trying to access. All very tidy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7744649809702277654?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7744649809702277654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7744649809702277654' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7744649809702277654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7744649809702277654'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/10/flashvars-and-document-class-files.html' title='FlashVars and Document Class files'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4159433386745135525</id><published>2007-10-04T13:38:00.000-07:00</published><updated>2007-10-04T15:00:04.570-07:00</updated><title type='text'>Trouble using FlexBuilder3 Beta 2 with Flash Remoting</title><content type='html'>Moving my AIR project from FlexBuilder 3 Beta 1 to FlexBuilder 3 Beta 2 broke my ability to compile. This is an ongoing issue, but there does seem to be a fix. &lt;a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?catid=651&amp;amp;threadid=1303695&amp;amp;CFID=16301424&amp;amp;CFTOKEN=129cb5269cfe2346-6CB46BE1-F485-C7D9-8D54E5BE7EE2335C&amp;amp;jsessionid=963028a07e6364407e69"&gt;Check out my post &lt;/a&gt;(I'm windsurf2).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4159433386745135525?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4159433386745135525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4159433386745135525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4159433386745135525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4159433386745135525'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/10/trouble-using-flexbuilder3-beta-2-with.html' title='Trouble using FlexBuilder3 Beta 2 with Flash Remoting'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4876920254945731409</id><published>2007-09-04T13:40:00.000-07:00</published><updated>2007-09-04T13:48:14.965-07:00</updated><title type='text'>Some lessons are never learnt</title><content type='html'>This is a follow up to my earlier post concerning components and the need to make the class files external. This isn't correct at all - I fell for a classic Flash trap that I should have learnt whilst working on the Nau project. The problem didn't lie in the application component that I am working on, but the flash file that imported it.&lt;br /&gt;&lt;br /&gt;Let me explain. I am using the new Document Class (let's say that I am using BaseClass.as for the purpose of illustration) in Flash and when the application component was being loaded in I cast the new MovieClip to a BaseClass instance. This should have worked, but I forgot that Flash will then include every class that it thinks that it needs into the file that receives the component when it clearly doesn't. Rather than creating a hefty exclude file I just refactored the application so that the file loading in the component does not refer to BaseClass at all. Everything is now working as it should - grrrr!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4876920254945731409?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4876920254945731409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4876920254945731409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4876920254945731409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4876920254945731409'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/09/some-lessons-are-never-learnt.html' title='Some lessons are never learnt'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-6334102999663155111</id><published>2007-08-30T15:18:00.000-07:00</published><updated>2007-08-30T15:23:45.699-07:00</updated><title type='text'>Skinning Components</title><content type='html'>Another gotcha when it comes to skinning the Flash Components v3 is that it is all too easy to have Flash automatically create the skin classes for you instead of explicitly creating classes and linking them to the library items.&lt;br /&gt;&lt;br /&gt;However, if you are referencing that class programatically, and you import the compiled Flash file into another .swf at run-time, you will get a run-time error. This is mainly due to the fact that Flash can no longer find the classes that it was so happily referencing earlier. Now, I am sure that there is a very good explanation to it, probably to do with the class package that Flash automatically assigns library items to, but I do not know for certain. However, as soon as those library items are linked to an explicit external class all was well again.&lt;br /&gt;&lt;br /&gt;Still learning.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-6334102999663155111?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/6334102999663155111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=6334102999663155111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6334102999663155111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/6334102999663155111'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/08/skinning-components.html' title='Skinning Components'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-702997504576982846</id><published>2007-08-30T15:09:00.000-07:00</published><updated>2007-08-30T15:16:24.138-07:00</updated><title type='text'>Embedded Fonts in Flash</title><content type='html'>With the advent of Flash 9 and AS3, I was wondering whether fonts and font-handling had changed. Now, being the lazy sort I have not bothered to find out until absolutely necessary, which was today.&lt;br /&gt;&lt;br /&gt;Building a flash piece using the new Flash Components v3 has not been too painful, but when I dynamically loaded the Flash file into another .swf the fonts disappeared! I scratched my head and looked up the documentation until I had found the solution. I changed the embedded font library items so that the linkage was to an empty external class, and in the initialization of the original flash file I used:&lt;br /&gt;&lt;br /&gt;Font.registerFont(MyriadPro);&lt;br /&gt;&lt;br /&gt;where MyriadPro is the class name of the embedded font. After this the fonts loaded in absolutely succesfully. And the learning continues....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-702997504576982846?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/702997504576982846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=702997504576982846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/702997504576982846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/702997504576982846'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/08/font-in-flash.html' title='Embedded Fonts in Flash'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7216389950915410496</id><published>2007-08-22T08:01:00.000-07:00</published><updated>2007-08-22T08:03:14.912-07:00</updated><title type='text'>HDTV Quality Web Video Reaches the Masses With Industry Standard Video Codec in Flash Player</title><content type='html'>Pretty exciting news!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://biz.yahoo.com/bw/070821/20070820006124.html?.v=1" target="_blank"&gt;Read the article here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7216389950915410496?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7216389950915410496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7216389950915410496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7216389950915410496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7216389950915410496'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/08/hdtv-quality-web-video-reaches-masses.html' title='HDTV Quality Web Video Reaches the Masses With Industry Standard Video Codec in Flash Player'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7458574219922365853</id><published>2007-06-12T11:04:00.000-07:00</published><updated>2007-06-12T11:10:38.227-07:00</updated><title type='text'>SEO</title><content type='html'>Blitz Agency has &lt;a href="http://labs.blitzagency.com/?p=171" target="_blank"&gt;developed a tool&lt;/a&gt; to aid in the SEO (Search Engine Optimization) process - although I would argue that their tool is more for Search Engine Accessibility. Never mind. Basically, it uses a config file to create the necessary HTML pages to create an accessible website. Pretty neat.&lt;br /&gt;&lt;br /&gt;Not sure if it is available for download or whether it is still in development but worth keeping an eye on.&lt;br /&gt;&lt;br /&gt;We used something very similar, albeit not using an automated tool for the &lt;a href="https://www.nau.com" target="_blank"&gt;nau&lt;/a&gt; website. You can see the effects &lt;a href="http://www.google.ca/search?hl=en&amp;q=nau+the+collective&amp;btnG=Search&amp;meta=" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://search.live.com/results.aspx?q=nau+the+collective&amp;mkt=en-us&amp;FORM=LIVSOP&amp;go.x=0&amp;go.y=0&amp;go=Search" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7458574219922365853?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7458574219922365853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7458574219922365853' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7458574219922365853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7458574219922365853'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/06/seo.html' title='SEO'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-1630422221537430733</id><published>2007-06-12T09:27:00.000-07:00</published><updated>2007-06-12T10:08:34.041-07:00</updated><title type='text'>Creating a bare-bones output window in the Terminal in OS X</title><content type='html'>If you want something fast and light weight to see your trace actions in OS X, follow these instructions. I'd appreciate people leaving comments with other types of tools they're using, and please specify system requirements, such as 'Windows only'.&lt;br /&gt;&lt;br /&gt;Prerequisites: Flash Player 9, &lt;b&gt;Debug&lt;/b&gt; version. Standalone or plug in. Only debug versions of players will work. If you're not sure which version you have, open a swf (in browser or standalone), and right click somewhere in the Flash. You should see an option in the menu that appears for 'Debugger'. It doesn't matter if it's greyed out, if it's there you have the debug player, if not, you don't.&lt;a href="#fp8"&gt;Note about Flash Player 8 below.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;With your text editor, edit this file (or create it if it doesn't exist):&lt;br /&gt;&lt;code&gt;/Library/Application Support/Macromedia/mm.cfg&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add the following to it then save and close it.&lt;code&gt;&lt;pre&gt;ErrorReportingEnable = 0&lt;br /&gt;TraceOutputFileEnable = 1&lt;br /&gt;MaxWarnings = 500&lt;br /&gt;TraceOutputFileName = Macintosh HD:Users:ablair:Library:Preferences:Macromedia:Flash Player:Logs:flashlog.txt&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Notice that &lt;code&gt;TraceOutputFileName&lt;/code&gt; is in the old OS 9 path syntax – I don't know why this is, but *nix style won't work, it has to be this way. Substitute &lt;code&gt;ablair&lt;/code&gt; with your own system username of course as it appears at the Terminal prompt.&lt;br /&gt;&lt;br /&gt;Note, you can set &lt;code&gt;ErrorReportingEnable = 1&lt;/code&gt; to see a lot more, but I find it gets cluttered. The only thing to be aware of is that with it set to 0 you will not see errors caused by bad paths when loading external assets, or uncaught exceptions.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a text file, don't save it yet. Add the following to it:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;clear&lt;br /&gt;echo ""&lt;br /&gt;echo "Starting traceviewer..."&lt;br /&gt;echo ""&lt;br /&gt;LOGFILE=~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt&lt;br /&gt;echo "" &gt; "$LOGFILE"&lt;br /&gt;tail -f "$LOGFILE"&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Save that file wherever you want, consider it an application. Name it &lt;code&gt;traceViewer.command&lt;/code&gt;. Close it.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open up a Terminal window and navigate to the directory where you saved the &lt;code&gt;traceViewer.command&lt;/code&gt; file. Type this to allow it to run as an application:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;chmod u+x traceViewer.command&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;li&gt;In the Finder, go to the place where the &lt;code&gt;traceViewer.comand&lt;/code&gt; application is and double click it to run it. It will open up a Terminal window and start running. I prefer to keep a copy of it in my dock.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Start visiting Flash sites or view your own swfs that have regular trace statements in them. You should start to see stuff flying by.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To quit, you can either close the Terminal window and select the terminate option, or press ctrl-c for cancel, then close the window.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Note, this tip should also work if you're developing on Linux with the Flex SDK.&lt;br /&gt;&lt;br /&gt;&lt;a name="fp8"&gt;&lt;/a&gt;Note about Flash Player 8. The above will also work with Flash Player 8 (debug), but the location of &lt;code&gt;mm.cfg&lt;/code&gt; was different that's all. You can Google it if you need to debug with Flash Player 8, I don't remember what the path used to be anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-1630422221537430733?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/1630422221537430733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=1630422221537430733' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/1630422221537430733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/1630422221537430733'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/06/creating-bare-bones-output-window-in.html' title='Creating a bare-bones output window in the Terminal in OS X'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-7961350471479213464</id><published>2007-06-11T15:50:00.000-07:00</published><updated>2007-06-12T10:59:54.306-07:00</updated><title type='text'>FileReference Class caveat</title><content type='html'>Yesterday I ran into something that is worth mentioning in case someone else runs into it in the future.&lt;br /&gt;&lt;br /&gt;Working with the FileReference class to download a pdf into the users machine.&lt;br /&gt;&lt;br /&gt;When using this class to download a file you have to make sure that the instance of the class is not a temporary variable instead a property of the class where you are implementing it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BAD:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import flash.net.FileReference;&lt;br /&gt;class FileDownloader&lt;br /&gt;{&lt;br /&gt;    public function downloadFile(p_file:String):Void&lt;br /&gt;    {&lt;br /&gt;        var _fileRef:FileReference = new FileReference();&lt;br /&gt;        if(!_fileRef.download(p_file, "myDownloadedFile.pdf"))&lt;br /&gt;        {&lt;br /&gt;            // In case the download window doesn't open for some reason.&lt;br /&gt;            getURL(p_file, "_blank");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;GOOD:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import flash.net.FileReference;&lt;br /&gt;class FileDownloader&lt;br /&gt;{&lt;br /&gt;    private var _fileRef:FileReference;&lt;br /&gt;    public function downloadFile(p_file:String):Void&lt;br /&gt;    {&lt;br /&gt;        this._fileRef = new FileReference();&lt;br /&gt;        if(!this._fileRef.download(p_file, "myDownloadedFile.pdf"))&lt;br /&gt;        {&lt;br /&gt;            // In case the download window doesn't open for some reason.&lt;br /&gt;            getURL(p_file, "_blank");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When you do a local variable the reference to that variable gets lost as soon as the function is done executing and in this case you need that reference to see if the dialog box opened or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-7961350471479213464?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/7961350471479213464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=7961350471479213464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7961350471479213464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/7961350471479213464'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/06/filereference-class-caveat.html' title='FileReference Class caveat'/><author><name>Rodrigo Gómez-Tagle A.</name><uri>http://www.blogger.com/profile/13503960502349746554</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-8499995470075526213</id><published>2007-04-30T10:59:00.000-07:00</published><updated>2007-04-30T11:16:28.762-07:00</updated><title type='text'>Trouble using try/catch with custom Error events in AS2</title><content type='html'>Here's how it &lt;b&gt;should&lt;/b&gt; be able to work once you have some custom error classes created, which would be subclasses of the &lt;code&gt;Error&lt;/code&gt; class:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;try {&lt;br /&gt; //do something that would throw one of the custom errors below&lt;br /&gt;}catch ( e:DivideByZeroError ){&lt;br /&gt; trace(e);&lt;br /&gt;}catch ( e:MissingFileDataException ){&lt;br /&gt; trace(e);&lt;br /&gt;}catch ( e:Error ){&lt;br /&gt; trace(e);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I have gotten this to work. I have seen it stop working inexplicably, and I have seen it start working again inexplicably. I have seen it fail on Mac and PC at apparently miscellaneous times. If you swap the order of the first two custom events you may get one or two compile errors about improperly placed &lt;code&gt;catch&lt;/code&gt; statement.&lt;br /&gt;&lt;br /&gt;If you browse through the Flash 7.2 and 8 livedocs, you'll see in the comments that this has been a chronic problem. I haven't tried it in AS3, but I would be surprised if it isn't fixed.&lt;br /&gt;&lt;br /&gt;I was using the above successfully for days, until it stopped working. I realize now that one consistent thing, is that MTASC doesn't have any problem with it, and subsequently, neither does the Flash Player at runtime. It's only the Flash IDE compiler (both FLash 8 and CS3; for AS2).&lt;br /&gt;&lt;br /&gt;I find throwing errors a great way to &lt;code&gt;catch&lt;/code&gt; development API misuse early on.  Wherever you think API could be misused accidentally, you put in a little line that will throw an error. For example, if you expect no arguments and someone passes an argument. Or, if a number is not between a certain value range etc. It can also be good for stopping a sequence of synchronous code in its tracks if it is missing a dependency. This has saved me hours of debugging time. &lt;br /&gt;&lt;br /&gt;Quite honestly, catching the custom errors has not been something I've made very good use of anyway, so the solution for me at this time, is to simply go back to using one &lt;code&gt;catch&lt;/code&gt; statement, for the generic Error type. (In other words, only the last one of the three above).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-8499995470075526213?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/8499995470075526213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=8499995470075526213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8499995470075526213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8499995470075526213'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/04/trouble-using-trycatch-with-custom.html' title='Trouble using try/catch with custom Error events in AS2'/><author><name>Andrew Blair</name><uri>http://www.blogger.com/profile/01915928913756483403</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/_euJfDNI0zLE/TMS0xVD-ChI/AAAAAAAAAB0/hS0phYMgwk0/s1600-R/4796572393_02e0f041f1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-2745797064023829046</id><published>2007-04-22T14:44:00.000-07:00</published><updated>2007-04-22T14:56:08.720-07:00</updated><title type='text'>Flash In The Can</title><content type='html'>Not that anyone is going to read the post, but what they hey. Today is the first day for Flash In The Can Toronto. I went to three presentations in the morning, Architecting Apps with Flex, ActionScript 3.0 and Flash CS3 (by Colin Moock), and a panel discussion entitled AS, Flex &amp; Apollo: What They Mean For You.&lt;br /&gt;&lt;br /&gt;The first presentation was a good chance for me to try and guage whether or not I had gotten my own presentation's content pitched correctly. It was quite a dry talk on Cairngorm without too many real world samples and so I am pretty happy that this talk was different enough from mine tomorrow to justify them both.&lt;br /&gt;&lt;br /&gt;Colin Moock presented ActionScript 3 and funky things that you can do using AS3 and the Flash IDE. Basically, it was expanding upon the idea of document class, and how the compiler mixes up variables and functions on the timeline and those in the external class file. It was fairly good, with some interesting insights but it didn't really add too much from code that I had already examined. Still, I am very excited about his upcoming book which gets released on June 1st.&lt;br /&gt;&lt;br /&gt;Lastly, the panel discussion featured such luminaries as Mike Downey and Grant Skinner and it was fairly good. The level of these types of discussions are really only as good as the questions that are asked by members of the audience, and I didn't really feel that it answered too much about Apollo, but if I felt that was the case I should have asked a question ;-)&lt;br /&gt;&lt;br /&gt;The afternoon was spent with Jon Morley, my co-speaker, hudled in my rom and going over the presentation for tomorrow whilst the sun was blazing outside. Toronto is beautiful at the moment (a relatively scorching 22c) with some cool down later on in the week. At least it's not snowing (or raining).&lt;br /&gt;&lt;br /&gt;On to tomorrow....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-2745797064023829046?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/2745797064023829046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=2745797064023829046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2745797064023829046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/2745797064023829046'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/04/flash-in-can.html' title='Flash In The Can'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4781732200807101311</id><published>2007-03-29T12:45:00.000-07:00</published><updated>2007-03-29T13:12:27.806-07:00</updated><title type='text'>Flex 2 tip to make your MXML more readable.</title><content type='html'>Listening to "the flex show" a pretty interesting podcast I learned a very useful tip to make your MXML code more readable.&lt;br /&gt;Normally the namespace in which all the flex components are based on is referenced by the prefix&lt;br /&gt;"mx:" like "" or "" well you can change that reference on your application tag like this.&lt;br /&gt;&lt;br /&gt;from:&lt;br /&gt;&lt;br /&gt;&amp;#60;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"/&amp;#62;&lt;br /&gt;&lt;br /&gt;to:&lt;br /&gt;&amp;#60;Application xmlns="http://www.adobe.com/2006/mxml"/&amp;#62;&lt;br /&gt;&lt;br /&gt;and with that change you can stop repeating the prefix "mx:" for all your components.&lt;br /&gt;making your code look a lot leaner and easier to read.&lt;br /&gt;&lt;br /&gt;&amp;#60;Panel&amp;#62;&lt;br /&gt;    &amp;nbsp;&amp;#60;Image/&amp;#62;&lt;br /&gt;    &amp;nbsp;&amp;#09;&amp;#60;Button/&amp;#62;&lt;br /&gt;&amp;#60;/Panel&amp;#62;&lt;br /&gt;&lt;br /&gt;Hope you find this as useful as I did.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4781732200807101311?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4781732200807101311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4781732200807101311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4781732200807101311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4781732200807101311'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/03/flex-2-tip-to-make-your-mxml-more.html' title='Flex 2 tip to make your MXML more readable.'/><author><name>Rodrigo Gómez-Tagle A.</name><uri>http://www.blogger.com/profile/13503960502349746554</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4495871004404416242</id><published>2007-03-29T12:33:00.000-07:00</published><updated>2007-03-29T12:44:19.222-07:00</updated><title type='text'>Getting ready for the future.</title><content type='html'>On the next project that I will be working on I will have to use Flex 2.0 and AS3 *gasp* there will be lots of learning and just as a reference for anyone that is going through the same experience I will be posting here some of the useful sites that I find along the way.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html"&gt;Flex 2 Style Explorer&lt;/a&gt; - extremely useful if you need to skin and style the flex components.&lt;br /&gt;&lt;a href="http://examples.adobe.com/flex2/inproduct/sdk/explorer/explorer.html"&gt;Adobe Flex 2 Component Explorer&lt;/a&gt; - this will give you a good idea of all the tools you can use to develop you application.&lt;br /&gt;&lt;br /&gt;stay tuned for more useful links and tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4495871004404416242?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4495871004404416242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4495871004404416242' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4495871004404416242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4495871004404416242'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/03/getting-ready-for-future.html' title='Getting ready for the future.'/><author><name>Rodrigo Gómez-Tagle A.</name><uri>http://www.blogger.com/profile/13503960502349746554</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-4506613165463882032</id><published>2007-03-29T09:13:00.000-07:00</published><updated>2007-03-29T09:40:47.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='previous'/><category scheme='http://www.blogger.com/atom/ns#' term='player'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Installing previous versions of the Flash Player</title><content type='html'>Adobe very nicely provide developers and end-users the ability to &lt;a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_14266" target="_blank"&gt;download&lt;/a&gt; and install all major versions of their Flash player in order to test variations of the plug-in against the application that you are developing.&lt;br /&gt;&lt;br /&gt;However, after trying to uninstall Flash 9,0,28 and install 9,0,16 on IE, I found that even though the plug-in said that the installation had been completed successfully, when I next went to a Flash site the player had not in fact been installed, and a quick check in the add-on list indeed verified that the Flash player was still missing.&lt;br /&gt;&lt;br /&gt;Eventually, I found &lt;a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=4a8d52ae#quote_mark" tagrget="_blank"&gt;this&lt;/a&gt; snippet of information on the Adobe tech support site. Whilst the header is completely misleading, the rest of the article mentions a key in the registry that needs to be deleted in order to install previous versions. The article states:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Choose Start &gt; Run.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Type &lt;strong&gt;regedit&lt;/strong&gt; in the Open box, and then click OK to start the Windows Registry Editor.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Navigate to the following registry key:&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\SafeVersions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Right-click and delete the folder named Safe Versions.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;As if by magic, the Flash installation then proceeded to work correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-4506613165463882032?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/4506613165463882032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=4506613165463882032' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4506613165463882032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/4506613165463882032'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/03/installing-previous-versions-of-flash.html' title='Installing previous versions of the Flash Player'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-8089405565050849716</id><published>2007-03-23T13:24:00.000-07:00</published><updated>2007-03-23T13:32:48.257-07:00</updated><title type='text'>First Tentative Steps into ActionScript 3.0</title><content type='html'>Having just been working on a long and involved project, I have been unable to find the time to look into ActionScript 3.0. Well, no longer. The &lt;a href="https://www.nau.com"&gt;nau&lt;/a&gt; website has been succesfully launched and ActionScript 3.0 beckons.&lt;br /&gt;&lt;br /&gt;After grabbing the &lt;a href="http://labs.adobe.com/technologies/flash9as3preview/"&gt;Flash 9 Alpha Preview&lt;/a&gt; and the &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex 2.0 SDK&lt;/a&gt;, I am gingerly going through &lt;a href="http://www.kirupa.com/forum/showthread.php?p=1877318#post1877318"&gt;these great 100 tips&lt;/a&gt; when using AS3 on the ever-impressive kirupa &lt;a href="www.kirupa.com"&gt;website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is obviously not news to anyone, but I felt it to be appropriate that my first post would be approx. 9 months late. Wait for my exclusive announcement of Apollo in December or so. Onwards and upwards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-8089405565050849716?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/8089405565050849716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=8089405565050849716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8089405565050849716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/8089405565050849716'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2007/03/first-tentative-steps-into-actionscript.html' title='First Tentative Steps into ActionScript 3.0'/><author><name>Fraser Campbell</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-114255767366163619</id><published>2006-03-16T17:07:00.000-08:00</published><updated>2006-03-16T17:08:35.553-08:00</updated><title type='text'>Flash Player 8.5 Public Beta announced</title><content type='html'>&lt;a href="http://www.macromedia.com/software/flashplayer/public_beta/" target="_blank"&gt;Get it here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-114255767366163619?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/114255767366163619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=114255767366163619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/114255767366163619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/114255767366163619'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2006/03/flash-player-85-public-beta-announced.html' title='Flash Player 8.5 Public Beta announced'/><author><name>andybiggs</name><uri>http://www.blogger.com/profile/07531695099280390627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24205080.post-114253424396283861</id><published>2006-03-16T10:31:00.000-08:00</published><updated>2006-03-16T11:19:08.323-08:00</updated><title type='text'>Template Class</title><content type='html'>To speed up development and always make sure my code remains clean and clear I have been using this template class I created. It has examples of &lt;a href="http://java.sun.com/j2se/javadoc/writingdoccomments/" target="_blank"&gt;Javadocs commenting&lt;/a&gt; and clean seperation between method types. Feel free to add comments with your suggested improvements.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.andybiggs.net/blogAssets/template.as" target="_blank"&gt;Download the template class here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24205080-114253424396283861?l=flash-focus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flash-focus.blogspot.com/feeds/114253424396283861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24205080&amp;postID=114253424396283861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/114253424396283861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24205080/posts/default/114253424396283861'/><link rel='alternate' type='text/html' href='http://flash-focus.blogspot.com/2006/03/template-class.html' title='Template Class'/><author><name>andybiggs</name><uri>http://www.blogger.com/profile/07531695099280390627</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
