<?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-3663492</id><updated>2011-10-10T22:45:27.467-07:00</updated><title type='text'>Flash Baby!</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default?start-index=101&amp;max-results=100'/><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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>139</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3663492.post-699510154662473862</id><published>2008-08-08T14:16:00.001-07:00</published><updated>2008-08-08T14:25:30.695-07:00</updated><title type='text'></title><content type='html'>Today, I will be the first in the world to propose a new programming language called Obscene.  You got it, it's a programming language that use obscenity and sensual words.  Enough of the academic bullshit, I think programming should be a stimulating process and reading code should be a trip to the Vegas strip joint.  Good code makes you want to come, bad code makes you want to puke.&lt;br /&gt;&lt;br /&gt;With this new language, no longer will the compiler scream at you for typing pubic instead for public, and fuction instead of function.  Interfaces will be prefixed with I as usual, but takes on a whole new entire meaning.  IPhone...IWatch...ITouch, oh yes, IlikeIt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-699510154662473862?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/699510154662473862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=699510154662473862' title='61 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/699510154662473862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/699510154662473862'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/08/today-i-will-be-first-in-world-to.html' title=''/><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>61</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-2712593623532247294</id><published>2008-08-06T20:26:00.000-07:00</published><updated>2008-08-06T20:30:44.931-07:00</updated><title type='text'></title><content type='html'>Freaking error: "Workspace in use or cannot be created, choose a different one"&lt;br /&gt;&lt;br /&gt;A few times in the past few weeks when I restarted Flex Builder, I would get this error: "Workspace in use or cannot be created, choose a different one".  Nothing online says much about it.  Just today I found the solution to this.  Basically if the java VM is still running (which is probably locking up the folder), you would get that message.  Simply kill the process javaw.exe, you are good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-2712593623532247294?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/2712593623532247294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=2712593623532247294' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2712593623532247294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2712593623532247294'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/08/freaking-error-workspace-in-use-or.html' title=''/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-8991148971953416003</id><published>2008-07-23T15:24:00.000-07:00</published><updated>2008-07-23T15:26:29.988-07:00</updated><title type='text'></title><content type='html'>Whatever frame rate you set to your Flash project to, always test it under a low frame rate setting (such as 10fps) to make sure everything still works solidly, and this will allow you to see how your app behaves on low end machines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8991148971953416003?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8991148971953416003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8991148971953416003' title='284 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8991148971953416003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8991148971953416003'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/whatever-frame-rate-you-set-to-your.html' title=''/><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>284</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-5675046281380655963</id><published>2008-07-19T18:24:00.000-07:00</published><updated>2008-07-19T21:54:36.629-07:00</updated><title type='text'></title><content type='html'>Debugging Tip #2&lt;br /&gt;&lt;br /&gt;Another snippet that is useful for debugging is the flash.system.System.totalMemory.&lt;br /&gt;&lt;br /&gt;trace(Number(System.totalMemory / (1 &lt;&lt; 10));&lt;br /&gt;&lt;br /&gt;This will display the total memory in KB.&lt;br /&gt;&lt;br /&gt;To display it in MB,&lt;br /&gt;&lt;br /&gt;trace(Number(System.totalMemory / (1 &lt;&lt; 20)).toFixed(2));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5675046281380655963?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5675046281380655963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5675046281380655963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5675046281380655963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5675046281380655963'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/another-snippet-that-is-useful-for.html' title=''/><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-3663492.post-8195195671073255083</id><published>2008-07-19T16:56:00.001-07:00</published><updated>2008-07-19T18:31:12.651-07:00</updated><title type='text'></title><content type='html'>Debugging Tip&lt;br /&gt;&lt;br /&gt;At times you might find yourself wanting to know if your swf is running in a debug version of Flash and behave accordingly.  You can do this by making use of the fact that Error class's getStackTrace() returns null when running in non-debug version of Flash player.&lt;br /&gt;&lt;br /&gt;function isDebugPlayer( ) : Boolean&lt;br /&gt;{&lt;br /&gt;      return Boolean(new Error().getStackTrace());&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8195195671073255083?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8195195671073255083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8195195671073255083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8195195671073255083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8195195671073255083'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/at-times-you-might-find-yourself.html' title=''/><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-3663492.post-416764468556336388</id><published>2008-07-19T16:45:00.000-07:00</published><updated>2008-07-19T16:55:48.594-07:00</updated><title type='text'></title><content type='html'>Actionscript 3's Array and String are now more improved and has a lot of methods found only in the popular scripting languages such as Perl, Python, etc.&lt;br /&gt;&lt;br /&gt;If you are not aware of these changes, you should hop over to&lt;br /&gt;http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html&lt;br /&gt;right away.&lt;br /&gt;&lt;br /&gt;New array methods you will find useful:&lt;br /&gt;&lt;br /&gt;indexOf, lastIndexOf&lt;br /&gt;every, some&lt;br /&gt;filter - filter out the items that pass your test into a new array&lt;br /&gt;forEach -  transform all array items in one fell swoop in place&lt;br /&gt;map - similar to forEach, but returns the new transformed items in new array&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some of the new useful string methods:&lt;br /&gt;search&lt;br /&gt;match&lt;br /&gt;replace - no more custom solution!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-416764468556336388?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/416764468556336388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=416764468556336388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/416764468556336388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/416764468556336388'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/actionscript-3s-array-is-much-more.html' title=''/><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-3663492.post-1227459097638982547</id><published>2008-07-15T12:36:00.000-07:00</published><updated>2008-07-15T12:43:23.285-07:00</updated><title type='text'></title><content type='html'>Colin Moock had a blog post today on the things you need to do to totally unload a swf from your code, I am attaching them here for convenience:&lt;br /&gt;--- snip ---&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tell any loaded .swf child assets to disable themselves.&lt;/li&gt;&lt;li&gt;Stop any sounds from playing.&lt;/li&gt;&lt;li&gt;Stop the main timeline, if it is currently playing.&lt;/li&gt;&lt;li&gt;Stop any movie clips that are currently playing.&lt;/li&gt;&lt;li&gt;Close any connected network objects, such as instances of Loader, URLLoader, Socket, XMLSocket, LocalConnection, NetConnections, and NetStream.&lt;/li&gt;&lt;li&gt;Release all references to cameras and microphones.&lt;/li&gt;&lt;li&gt;Unregister all event listeners in the .swf (particularly Event.ENTER_FRAME, and mouse and keyboard listeners)&lt;/li&gt;&lt;li&gt;Stop any currently running intervals (via clearInterval()).&lt;/li&gt;&lt;li&gt;Stop any Timer objects (via the Timer class’s instance method stop()).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;-- snip --&lt;br /&gt;&lt;br /&gt;More info can be found at http://www.moock.org/blog/archives/000279.html&lt;br /&gt;&lt;br /&gt;One thing to take away from this is that when you are working out your code architecture, you can try to obtain a lot of the resources above through a single point of access.  While this will inherently increase the coupling of your code to that one component, it does have the benefit of allowing you to easily manage all your resources in one place and do all the cleanup work in one place.  Something to think about.&lt;br /&gt;&lt;br /&gt;&lt;a href="javascript:void(0)" tabindex="10" onclick="return false;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-1227459097638982547?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/1227459097638982547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=1227459097638982547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1227459097638982547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1227459097638982547'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/colin-moock-had-blog-post-today-on.html' title=''/><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-3663492.post-7841137034602304947</id><published>2008-07-14T17:07:00.000-07:00</published><updated>2008-07-14T17:11:20.987-07:00</updated><title type='text'></title><content type='html'>Actionscript 3 Class Destructor (in my dream)&lt;br /&gt;&lt;br /&gt;I wish Actionscript 4.0 will come with a destructor.  It's so useful to not only know when your object is born, but when it's about to die as well.  Even though AVM implements garbage collection scheme, there is still no reason why we can't have a destructor.  The moment an object becomes a candidate for garbage collection, its destructor can be called and us the users can do whatever we want (such as doing cleanup work, tracking for memory leaks, prepare an epitaph for the object (jk), ...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7841137034602304947?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7841137034602304947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7841137034602304947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7841137034602304947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7841137034602304947'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/actionscript-3-class-destructor-in-my.html' title=''/><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-3663492.post-631367557842637386</id><published>2008-07-13T13:19:00.001-07:00</published><updated>2008-07-13T13:23:44.569-07:00</updated><title type='text'></title><content type='html'>Loader and URLLoader&lt;br /&gt;&lt;br /&gt;If you are just starting out coding in Actionscript 3, at times you might find yourself asking: What is the difference between Loader and URLLoader?  Well, before you get asked by someone to RTFM, just remember that Loader inherits from DisplayObjectContainer, so anything that you might use for display purposes (such as swf, jpg, png etc.) you will load it via Loader.  URLLoader, on the other hand, inherits from EventDispatcher, so anything that you use as data (such as xml, text file, etc.) you will load it via URLLoader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-631367557842637386?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/631367557842637386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=631367557842637386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/631367557842637386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/631367557842637386'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/loader-and-urlloader-if-you-are-just.html' title=''/><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-3663492.post-578366537272929983</id><published>2008-07-13T00:36:00.000-07:00</published><updated>2008-12-08T16:09:34.573-08:00</updated><title type='text'></title><content type='html'>Using namespace for your Flex library swc&lt;br /&gt;&lt;br /&gt;I downloaded degrafa today, and built the swc from source.  I wanted to use the library like so in my MXML file:&lt;br /&gt;&lt;br /&gt;First time when I built it, I got an error trying it the above way.&lt;br /&gt;Read up on the doc, and this time I included the Namespace URL and Manifest file path in Project Properties-&gt;Flex Library Compiler.&lt;br /&gt;Tried it again and still no go, got some dumb "Could not resolve x to component implementation" error.&lt;br /&gt;Read up the doc one more time on the compiler option one more time, this time I included another parameter -include-namespaces and rebuilt the project, and it worked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dYUlaOA8czc/SHmxv-hIrhI/AAAAAAAAAA4/ANNXAcSNu0g/s1600-h/library-namespace.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_dYUlaOA8czc/SHmxv-hIrhI/AAAAAAAAAA4/ANNXAcSNu0g/s320/library-namespace.JPG" alt="" id="BLOGGER_PHOTO_ID_5222400680706747922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-578366537272929983?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/578366537272929983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=578366537272929983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/578366537272929983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/578366537272929983'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/using-namespace-for-your-flex-library.html' title=''/><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dYUlaOA8czc/SHmxv-hIrhI/AAAAAAAAAA4/ANNXAcSNu0g/s72-c/library-namespace.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-4708348773823339112</id><published>2008-07-08T08:50:00.000-07:00</published><updated>2008-07-08T10:04:38.524-07:00</updated><title type='text'></title><content type='html'>Collision detection code is usually one of the most CPU intensive part of any game engine.  Done improperly, it can severely cripple your frame rate, and worse, make your game looks unrealistic.  After all, it's never realistic to see a bullet flying through thick walls or one car stacking on top of another.&lt;br /&gt;&lt;br /&gt;One important key to doing collision detection is to know when not to do it.  If you could reject a potential test early on, then you just saved yourself some CPU there.  Another thing to be mindful of is the boundary condition.  That is, what happen if a bullet is on one side of the wall in this render cycle, but appears on the next side of the wall in the next render cycle?  What happen if your game is running on a slow machine and therefore render at a very low frame rate?  Usually that means your collision detection code will get call less, making it less accurate and therefore all that more important to work for things that are moving at relatively higher speed.&lt;br /&gt;&lt;br /&gt;Let's say you have a driving game that is a top-down scroller.  In the game, the player's car can switch lane very quickly.  To reduce the amount of collision detection needed, you have made it so that the player's car only detects for collision when it's switching lane.  Let's also assume that you employ a very simple scheme of collision detection by using hitTest of the player's car against all the cars in the next lane that is' switching to.  In the event of collision, the car will abort its lane changing operation and goes back to its original lane.  If the car has successfully switches lane without hitting any car in the process (based on when its position snaps with the new lane's position), no lane change abortion will be performed.&lt;br /&gt;&lt;br /&gt;Now imagine everything is going good, and suddenly your game is running at 10fps.  That means your collision code will only be run every 100msec.  One very possible scenario is that the collision code only gets to run once while the car is switching lane, and the next time it runs, the car has already snapped onto the new lane and then collide with another car there.   But since the lane change has already finished, it will not abort and end up getting stuck on top of that car.&lt;br /&gt;&lt;br /&gt;In a situation like this, a simple hitTest might not suffice.  You will likely need to employ a different collision check scheme (such as a simple ray trace), enlarge the bounding box of the car when the frame rate is low, etc.&lt;br /&gt;&lt;br /&gt;As you can see, collision detection is a huge subject, knowing and doing it properly is the key to making your game perform well both from the performance standpoint and gameplay standpoint.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4708348773823339112?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4708348773823339112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4708348773823339112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4708348773823339112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4708348773823339112'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/collision-detection-code-is-usually-one.html' title=''/><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-3663492.post-6461834390936468958</id><published>2008-07-04T23:12:00.001-07:00</published><updated>2008-07-04T23:14:14.430-07:00</updated><title type='text'></title><content type='html'>Quiz of the Day&lt;br /&gt;&lt;br /&gt;If class A implements interface IA and class B inherits from class A.   We know that class A is an instance of interface IA by virtue of the interface implementation, but is class B an instance of interface IA through inheritance?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-6461834390936468958?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/6461834390936468958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=6461834390936468958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/6461834390936468958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/6461834390936468958'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/quiz-of-day-if-class-implements.html' title=''/><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-3663492.post-4238467941209066011</id><published>2008-07-04T21:54:00.000-07:00</published><updated>2008-07-04T22:55:54.933-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;There is a bizarre limitation in MXML that if you were to create a container with child tags in it, you can no longer include any child tag if you were to use it when using the container in another MXML file.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here is what the documentation says:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;"...If you include child tags of the root container tag in an MXML component file, you cannot add child tags when you use the component as a custom tag in another MXML file. If you define an empty container in an MXML file, you can add child tags when you use the component as a custom tag.&lt;/p&gt;&lt;div class="note"&gt;&lt;span class="notetitle"&gt;Note: &lt;/span&gt;The restriction on child tags refers to the child tags that correspond to visual components. Visual components are subclasses of the UIComponent component. You can always insert tags for nonvisual components, such as ActionScript blocks, styles, effects, formatters, validators, and other types of nonvisual components, regardless of how you define your custom component."&lt;br /&gt;&lt;br /&gt;Essentially, if you are creating a custom component that is a container, it will no longer be a container if you add child elements to it!&lt;br /&gt;&lt;br /&gt;There may be a technical reason behind why this is not possible yet, but from a user's standpoint, it's an annoyance because it goes against the intuition and certainly violates the Principle of Least Surprise.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4238467941209066011?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4238467941209066011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4238467941209066011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4238467941209066011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4238467941209066011'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/there-is-bizarre-limitation-in-mxml.html' title=''/><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-3663492.post-8793248014332137185</id><published>2008-07-04T19:17:00.001-07:00</published><updated>2008-07-04T20:01:17.223-07:00</updated><title type='text'></title><content type='html'>I ran into a strange issue with the Flex debugger today.  Basically, it would take a long time for the swf file to be connected to Flex builder's debugger.&lt;br /&gt;&lt;br /&gt;I checked the port usage (netstat -ano), didn't see anything suspicious -- I am seeing Flex is listening on port 7935, which is a correct behavior when debugging Flex app (Flex basically listens on that port, and the debug version of Flash plugin would attempt to connect to that port upon launch).&lt;br /&gt;&lt;br /&gt;I checked mm.cfg, didn't see anything strange there.  Looked at hosts file, looked good (127.0.0.1 is mapped to localhost).  Tried installing a new version of Flash debugger plugin, no go.  Cleaned the project, it didn't refuse to work.  Finally, I tried to debug things with a different Flex project, and it worked fine!  I looked at the difference between the two projects and the only difference is that one is a project running locally, another one is running through Apache + ColdFusion via a virtual host.  A quick look at the services in the service browser (type services.msc in Run dialog box) and I saw that ColdFusion Application Server had been stopped.  I restarted it and voila, everything worked like before!&lt;br /&gt;&lt;br /&gt;While looking for a solution, I also came upon the link below, it didn't end up helping me, but it might to someone out there.&lt;br /&gt;&lt;br /&gt;http://therush.wordpress.com/2008/03/11/resolved-flex-builder-3-debugger-stopped-working/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8793248014332137185?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8793248014332137185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8793248014332137185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8793248014332137185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8793248014332137185'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/07/i-ran-into-strange-issue-with-flex.html' title=''/><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-3663492.post-7762765842134142825</id><published>2008-06-23T09:27:00.000-07:00</published><updated>2008-06-23T09:31:58.530-07:00</updated><title type='text'></title><content type='html'>A few of you will probably run into the problem of invoking your coldfusion components if you install ColdFusion to use your own webserver and you don't have the cfc placed in the standard folder path.&lt;br /&gt;&lt;br /&gt;The answer to fixing this is in this article:&lt;br /&gt;http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=buildingComponents_27.html&lt;br /&gt;&lt;br /&gt;Specifically this:&lt;br /&gt;&lt;br /&gt;ColdFusion uses the following rules to find the specified CFC:&lt;br /&gt;&lt;br /&gt;    * If you use a cfinvoke or cfobject tag, or the CreateObject function, to access the CFC from a CFML page, ColdFusion searches directories in the following order:&lt;br /&gt;         1. Local directory of the calling CFML page&lt;br /&gt;         2. Web root&lt;br /&gt;         3. Directories specified on the Custom Tag Paths page of ColdFusion Administrator&lt;br /&gt;    * If you specify only a component name, ColdFusion searches each of these directories, in turn, for the component.&lt;br /&gt;    * If you specify a qualified path, such as myApp.cfcs.myComponent, ColdFusion looks for a directory matching the first element of the path in each of these directories (in this example, myApp). If ColdFusion finds a matching directory, it looks for a file in the specified path beneath that directory, such as myApp\cfcs\myComponent.cfc, relative to each of these directories.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So to help ColdFusion find your component, you can specify your custom folder in the Custom Tags Path in your CF admin tool.  Once you do that, everything will work the way it should.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7762765842134142825?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7762765842134142825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7762765842134142825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7762765842134142825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7762765842134142825'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/few-of-you-will-probably-run-into.html' title=''/><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-3663492.post-3566414863799179126</id><published>2008-06-22T16:12:00.000-07:00</published><updated>2008-06-22T16:14:16.993-07:00</updated><title type='text'></title><content type='html'>These nice Flex tips were posted by David Zuckerman, mirroring here for my convenience.&lt;br /&gt;&lt;br /&gt;http://davidzuckerman.com/adobe/2006/10/27/flex-builder-editor-cheat-sheet&lt;br /&gt;&lt;br /&gt;1.) Open type (Ctrl-Shift-T)* - this lets you browse all the types (AS classes/interfaces, MXML files) in your project and quickly open them.&lt;br /&gt;&lt;br /&gt;2.) Goto Definition (F3/Ctrl-click on identifier)* - quickly jump to the definition of an identifier (type/variable/function).&lt;br /&gt;&lt;br /&gt;3.) Quick Outliner (Ctrl-O)* - get the outline view as a pop-up window, with the added ability to type and filter down to the function/member variable that you’re looking for.&lt;br /&gt;&lt;br /&gt;4.) Context sensitive help (F1 on an identifier/tag) - for an MXML tag, function or class/interface, show the help entry for that item in the Eclipse Help Panel.&lt;br /&gt;&lt;br /&gt;5.) Open context sensitive help (Shift-F2 on an identifier) - for an MXML tag, function or class/interface, show the help entry for that item in the integrated Help browser. This will most likely open a new browser window.&lt;br /&gt;&lt;br /&gt;6.) Jump to matching brace (Ctrl-Shift+P)* - jumps to the matching brace if your cursor is to the left or right of a given balanced brace.&lt;br /&gt;&lt;br /&gt;7.) Hover over an identifier - when you put your mouse over a variable, we display its type. When you hover over a function, we display its return type (if it has one).&lt;br /&gt;&lt;br /&gt;8.) Add CDATA block (Ctrl-Shift-C) in MXML - wraps a given selection in a CDATA block&lt;br /&gt;&lt;br /&gt;9.) Event type hinting (Ctrl-space) - addEventListener( will display all the events that are relevant targets for a listener function.&lt;br /&gt;&lt;br /&gt;10.) Fold all functions/ASDoc comments/comments in ActionScript - With folding enabled, right-click on the vertical gutter, drill down to “Folding”&lt;br /&gt;&lt;br /&gt;11.) Organize imports (Ctrl + Shift + O)* - Sorts the imports in ActionScript files, removes duplicates and consolidates when needed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-3566414863799179126?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/3566414863799179126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=3566414863799179126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3566414863799179126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3566414863799179126'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/these-nice-flex-tips-were-posted-by.html' title=''/><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-3663492.post-1842355759403260788</id><published>2008-06-20T15:18:00.000-07:00</published><updated>2008-06-20T15:20:01.780-07:00</updated><title type='text'></title><content type='html'>Have you ever run into gotoAndPlay in AS2 not working?  It's as if the playhead is stuck at the frame location that you go to.  This bug has been around for quite some time, seems to be a problem with the Flash player.  The way to get around this is by putting a play() in the frame that you want to go to to force it to play.  I have not run into this issue with Flash 9/AS 3 yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-1842355759403260788?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/1842355759403260788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=1842355759403260788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1842355759403260788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1842355759403260788'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/have-you-ever-run-into-gotoandplay-in.html' title=''/><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-3663492.post-3220225472143284056</id><published>2008-06-20T14:59:00.000-07:00</published><updated>2008-06-20T15:05:22.308-07:00</updated><title type='text'></title><content type='html'>In C, you can use compiler preprocessors to do conditional compilations (#if, #ifdef) to help exclude certain things from being compiled into your final executable.&lt;br /&gt;&lt;br /&gt;Since preprocessor is not available in Flash, if you want to dynamically include something for local testing and exclude it during web deployment, you can use the player type check to achieve similar results.&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;if (System.capabilities.playerType != "External")&lt;br /&gt;{&lt;br /&gt;   // show fps meter&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-3220225472143284056?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/3220225472143284056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=3220225472143284056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3220225472143284056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3220225472143284056'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/if-you-want-to-dynamically-include.html' title=''/><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-3663492.post-8759616451044019530</id><published>2008-06-20T12:09:00.001-07:00</published><updated>2008-06-20T12:15:06.193-07:00</updated><title type='text'></title><content type='html'>A lot of the audio visualization effects - while visually pleasing, don't move me at all.  We have seen plenty of things that move us, so why not this?  I think this is a classical problem of technical people trying to approach this from the back (info, bit processing) instead of front (heart/soul), and end up interpreting too much of the audio info in their algorithms instead of trying to figure out what can be ignored to create something that moves people. What I am looking for is visuals that dance with the music, not just purely interpreting what is in it.&lt;br /&gt;&lt;br /&gt;Do you have the same issues with the audio visualization stuff you see out there?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8759616451044019530?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8759616451044019530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8759616451044019530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8759616451044019530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8759616451044019530'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/lot-of-audio-visualization-effects.html' title=''/><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-3663492.post-5240468863118347217</id><published>2008-06-19T23:02:00.000-07:00</published><updated>2008-06-19T23:04:16.744-07:00</updated><title type='text'></title><content type='html'>Sometimes you have quite a few places using the same movieclip (across movieclips, across tween frames), and it's quite a pain to have to name all the instance name.  The best way to get around this is to create a class and associate it with the movieclip, and name it inside the movieclip itself: e.g.&lt;br /&gt;&lt;br /&gt;class mc&lt;br /&gt;{&lt;br /&gt;  private function onLoad() { this._name = "instance_name"; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Much quicker and no need to mess with the FLA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5240468863118347217?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5240468863118347217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5240468863118347217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5240468863118347217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5240468863118347217'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/sometimes-you-have-quite-few-places.html' title=''/><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-3663492.post-3415042122356485181</id><published>2008-06-11T09:09:00.000-07:00</published><updated>2008-06-11T09:11:04.202-07:00</updated><title type='text'></title><content type='html'>Editing a symbol, especially one that is empty in its first frame, requires precise selection right down to when you double click it.  I have lately mapped Ctrl+E to edit in place and have found this to be a time saver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-3415042122356485181?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/3415042122356485181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=3415042122356485181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3415042122356485181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3415042122356485181'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/06/editing-symbol-especially-one-that-is.html' title=''/><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-3663492.post-4134622389383553092</id><published>2008-05-24T22:51:00.001-07:00</published><updated>2008-05-24T22:55:01.627-07:00</updated><title type='text'></title><content type='html'>I always wonder what those svchost.exe listed in the Task manager actually are.  After some research, I found out that it's actually a program used to execute windows services.  I also found out a tool called process explorer that tells you exactly what services the scvhost is responsible for running.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.howtogeek.com/howto/windows-vista/what-is-svchostexe-and-why-is-it-running/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4134622389383553092?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4134622389383553092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4134622389383553092' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4134622389383553092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4134622389383553092'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/05/i-always-wonder-what-those-svchost.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-259082973112826089</id><published>2008-03-13T23:26:00.001-07:00</published><updated>2008-03-13T23:26:34.203-07:00</updated><title type='text'>Centralized update</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;When you get into game programming, the first thing you learned is that you should use a centralized update function triggered by your onEnterFrame event or Timer (AS3)/setInterval (AS2) event that in turns call game objects update.  There are many benefits in having a single point of entry for update - one is performance and another reason is you want the ability to control what game objects receive update and when.  For example, when you are pausing the game, all you need to do is one line of conditional statement in your root level update function to ensure all child level update functions stop getting called.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-259082973112826089?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/259082973112826089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=259082973112826089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/259082973112826089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/259082973112826089'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/03/centralized-update.html' title='Centralized update'/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-8896259005992421761</id><published>2008-03-13T22:08:00.001-07:00</published><updated>2008-03-13T22:08:56.498-07:00</updated><title type='text'>Multiple gotoAndPlay considered really harmful</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Shortly after I wrote a blog post about how decentralized  gotoAndPlay calls can mess up your game states, I ran into a situation where calling gotoAndPlay on the same clip multiple times is causing real harm!  Basically, I have a hit animation on an enemy movieclip that gets played whenever the enemy is hit.  For enemies that can take multiple hits before they are destroyed, they sometimes would run into a "stuck" state where the animation isn't playing anymore.  Finally, I had to fix it by making sure that the hit state animation can only be played when it's done playing.  This has not been the case for many other game projects I have done, so I am not sure exactly what combination of things are causing this behavior.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8896259005992421761?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8896259005992421761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8896259005992421761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8896259005992421761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8896259005992421761'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/03/multiple-gotoandplay-considered-really.html' title='Multiple gotoAndPlay considered really 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-3663492.post-5223574004333658432</id><published>2008-02-24T12:48:00.001-08:00</published><updated>2008-02-24T12:48:24.947-08:00</updated><title type='text'></title><content type='html'>Multiple gotoAndPlay() considered harmful&lt;br /&gt;&lt;br /&gt;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/3663492-5223574004333658432?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5223574004333658432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5223574004333658432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5223574004333658432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5223574004333658432'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/02/multiple-gotoandplay-considered-harmful.html' title=''/><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-3663492.post-32728626218343237</id><published>2008-02-09T19:27:00.000-08:00</published><updated>2008-02-09T20:01:12.369-08:00</updated><title type='text'></title><content type='html'>Simple productivity tips for Flash developers&lt;br /&gt;&lt;br /&gt;If you do Flash for a living, chances are that you work on projects that usually takes more than a few days to finish.  You may find the following tips helpful:&lt;br /&gt;&lt;br /&gt;Flash IDE&lt;br /&gt;1) Edit-&gt;Preferences-&gt;On Launch, select Last Documents Open.&lt;br /&gt;2) If you switch between workspaces often, you may find it helpful to save your Workspace using the Workspace button right below the timeline panel.&lt;br /&gt;&lt;br /&gt;Flash Develop&lt;br /&gt;(I hope you are using this editor, this is simply the best money can buy at the moment, not to mention it's free!)&lt;br /&gt;1) Press F10 (or Tools-&gt;Program Settings).  Select AS2Context or AS3Context, go to Common Section and set the value for Check Syntax on Save to true.  I find this to be a timesaver, knowing that your code is always syntactically correct.&lt;br /&gt;&lt;br /&gt;2) This snippet editor is another great tool in Flash Develop (under Tools-&gt;General Tools)  I use the editor to define commonly-performed tasks such as defining variables, writing trace statements, etc.  After you define your set of snippets, simply press Control+B to activate it in FlashDevelop.&lt;br /&gt;&lt;br /&gt;e.g. I have defined a shortcut for trace statement:&lt;br /&gt;t -&gt; trace("$(Clipboard): " + $(Clipboard));&lt;br /&gt;&lt;br /&gt;Now in FlashDevelop, I copy the variable I want to trace to the clipboard, enter t and press Ctrl+B, voila, the entire trace statement in its gloary.  If you know of a faster way than this, let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-32728626218343237?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/32728626218343237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=32728626218343237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/32728626218343237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/32728626218343237'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/02/simple-productivity-tips-for-flash.html' title=''/><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-3663492.post-4905001123238861730</id><published>2008-02-05T22:47:00.000-08:00</published><updated>2008-02-05T22:49:13.880-08:00</updated><title type='text'></title><content type='html'>Have you ever wondered where a movieclip asset on stage is located in your library?  Many times the folder structure that was there to provide organization ends up being an obstacle to you getting to what you are looking for.  A quick way to find out where the asset is is by going to your Properties panel (Ctrl + F3) and click the Swap button.  The dialog box that pops up will show you nicely where your movieclip is located in the forest of folders.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4905001123238861730?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4905001123238861730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4905001123238861730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4905001123238861730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4905001123238861730'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/02/have-you-ever-wondered-where-movieclip.html' title=''/><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-3663492.post-5411114735868566435</id><published>2008-01-23T01:11:00.000-08:00</published><updated>2008-06-20T15:11:53.481-07:00</updated><title type='text'></title><content type='html'>I have made a PlayheadNotifier class that I use to communicate with Flash's timeline.  &lt;br /&gt;Sometimes you want to execute a function only when a certain frame of animation is reached.&lt;br /&gt;&lt;br /&gt;However, there is one caution -- what happen if the animation was intercepted and the frame was never reached?  Your function will never get executed.  If you are setting state information in that function, then your object will be in an incorrect state.&lt;br /&gt;&lt;br /&gt;When coding in Flash, you must always be mindful that any code execution path that is tied to your playhead may be intercepted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5411114735868566435?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5411114735868566435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5411114735868566435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5411114735868566435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5411114735868566435'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/01/i-have-made-playheadnotifier-class-that.html' title=''/><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-3663492.post-4656873845942044003</id><published>2008-01-22T14:42:00.000-08:00</published><updated>2008-01-22T14:45:55.497-08:00</updated><title type='text'></title><content type='html'>We all know what Math.floor and Math.ceil do, but do you know the relationship between the two?  Or asked another way, how would you implement ceil function using Math.floor (or vice versa)?&lt;br /&gt;&lt;br /&gt;Imlementing ceil using Math.floor:-&lt;br /&gt;&lt;br /&gt;function ceil(value:Number):Number&lt;br /&gt;{&lt;br /&gt;  return -Math.floor(-value);&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4656873845942044003?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4656873845942044003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4656873845942044003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4656873845942044003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4656873845942044003'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/01/we-all-know-what-math.html' title=''/><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-3663492.post-1103576632410371081</id><published>2008-01-22T14:39:00.000-08:00</published><updated>2008-01-22T14:46:29.637-08:00</updated><title type='text'></title><content type='html'>What's the fastest way to test if a number is odd number?&lt;br /&gt;&lt;br /&gt;function isOddNumber(value:Number):Number&lt;br /&gt;{&lt;br /&gt;  //--&gt; your test here&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is my version: The idea is by checking if the lowest bit of the number is set&lt;br /&gt;&lt;br /&gt;function isOddNumber(value:Number):Number&lt;br /&gt;{&lt;br /&gt;  return (value &amp; 1 == 1);&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-1103576632410371081?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/1103576632410371081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=1103576632410371081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1103576632410371081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1103576632410371081'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/01/whats-fastest-way-to-test-if-number-is.html' title=''/><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-3663492.post-6567626632110527625</id><published>2008-01-22T14:32:00.000-08:00</published><updated>2008-01-22T14:49:00.687-08:00</updated><title type='text'></title><content type='html'>What's wrong with the following code:&lt;br /&gt;&lt;br /&gt;var loop = levelNum * enemiesPerLevel;&lt;br /&gt;if (level &gt; 10) loop *= 1.5;&lt;br /&gt;while (loop--) {&lt;br /&gt;  // spawn enemy&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The code above was used in a game engine that I had to work with recently.  It's used to spawn the number of enemies depending on the level.  If the level has gone up to 10, the intention is to up the enemies count by 50%.  However, there is a serious flaw to the code, where is it?&lt;br /&gt;&lt;br /&gt;The problem is in the loop *= 1.5;  The fractional multiplication will sometimes produce a floating number in the while condition.  So it's possible for the condition to still pass when the loop count to skip past zero to negative value, which still passes the test!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-6567626632110527625?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/6567626632110527625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=6567626632110527625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/6567626632110527625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/6567626632110527625'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/01/whats-wrong-with-following-code-var.html' title=''/><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-3663492.post-7964655987486489361</id><published>2008-01-12T14:33:00.000-08:00</published><updated>2008-01-12T14:41:21.673-08:00</updated><title type='text'></title><content type='html'>How to find occupied port number&lt;br /&gt;&lt;br /&gt;I was installing Apache 2.2.6 on my machine today and when I tried to run Apache, it says it has problem binding to the address 0.0.0.0:80.  I have run into this issue in the past so this doesn't cause as much panic this time around.  Basically, you just need to find out what program is using port 80, unblock it and you are set to go.&lt;br /&gt;&lt;br /&gt;Here is what I usually do:&lt;br /&gt;&lt;br /&gt;1) Run command prompt&lt;br /&gt;2) Type netstat -ano&lt;br /&gt;3) Look for the line that says 0.0.0.0:80 in the Local Address column&lt;br /&gt;4) Look at the PID in the last column.  In my case, it says 3076&lt;br /&gt;5) Fire up your task manager, click Processes tab&lt;br /&gt;6) If you don't see the PID column in the listbox, click View-&gt;Select Columns and check PID (Process Identifier)&lt;br /&gt;7) Now you should see the PID in the listing.  Search for the row that has PID 3076, in my case, the image name that takes up port 80 is skype.&lt;br /&gt;8) Quit skype, re-run Apache (no more bitching about port being taken by someone), relaunch skype.  Everything is good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7964655987486489361?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7964655987486489361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7964655987486489361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7964655987486489361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7964655987486489361'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2008/01/how-to-find-occupied-port-number-i-was.html' title=''/><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-3663492.post-7631513379274347213</id><published>2007-12-04T21:16:00.000-08:00</published><updated>2007-12-04T21:18:18.876-08:00</updated><title type='text'></title><content type='html'>Watch out for a closure in a loop:&lt;br /&gt;&lt;br /&gt;var info = [ "a", "b", "c", ... ];&lt;br /&gt;for (var i = 0; i &lt; 10; i++)&lt;br /&gt;{&lt;br /&gt;  var str:String = info[i];&lt;br /&gt;  btn[i].onRelease = function() { getURL(str) }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;All buttons will bring you to the last url because the closure maintains a reference to the variable str.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7631513379274347213?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7631513379274347213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7631513379274347213' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7631513379274347213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7631513379274347213'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/12/watch-out-for-closure-in-loop-var-info.html' title=''/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-4699822170635954405</id><published>2007-12-04T21:14:00.000-08:00</published><updated>2007-12-04T21:16:13.794-08:00</updated><title type='text'></title><content type='html'>Dynamically loading images/swf + masking&lt;br /&gt;&lt;br /&gt;When you are loading an image into an empty movieclip, beware of doing setMask on the mc too early.  Try to do everything after the image is done loading.  In fact, masking is only one of the operations that can fail when applied prematurely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4699822170635954405?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4699822170635954405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4699822170635954405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4699822170635954405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4699822170635954405'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/12/dynamically-loading-imagesswf-masking.html' title=''/><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-3663492.post-4584144316460593376</id><published>2007-11-11T03:02:00.001-08:00</published><updated>2007-11-26T04:31:14.494-08:00</updated><title type='text'></title><content type='html'>The Evil Mr. Singleton&lt;br /&gt;&lt;br /&gt;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/3663492-4584144316460593376?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4584144316460593376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4584144316460593376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4584144316460593376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4584144316460593376'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/11/demise-of-singleton-in-my-opinion.html' title=''/><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-3663492.post-1667119686971278963</id><published>2007-11-02T11:15:00.000-07:00</published><updated>2007-11-02T11:16:57.668-07:00</updated><title type='text'></title><content type='html'>Cool tool for double monitor -- ultramon&lt;br /&gt;http://www.realtimesoft.com/ultramon/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-1667119686971278963?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/1667119686971278963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=1667119686971278963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1667119686971278963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/1667119686971278963'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/11/cool-tool-for-double-monitor-ultramon.html' title=''/><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-3663492.post-8114175404453536074</id><published>2007-11-02T10:03:00.001-07:00</published><updated>2007-11-02T10:55:54.258-07:00</updated><title type='text'></title><content type='html'>Came across a pretty cool way of rendering a 3D sphere on Paul Ortchanian's website today.&lt;br /&gt;&lt;br /&gt;Click &lt;a href="http://www.reflektions.com/miniml/template_permalink.asp?id=329"&gt;here&lt;/a&gt; to see the 3D sphere in action.  Paul is very generous in sharing his work, you can see the full source code for 3D sphere on his site.&lt;br /&gt;&lt;br /&gt;Let's jump in and figure out how Paul renders the 3D sphere.&lt;br /&gt;&lt;br /&gt;outer loop with i going from -180 to 180&lt;br /&gt;  inner loop with j going from -180 to 180&lt;br /&gt;    _x = _path.centerX + Math.cos(i) * Math.cos(j)*_path.FL;&lt;br /&gt;    _y = _path.centerY + Math.cos(i) * Math.sin(j)*_path.FL;&lt;br /&gt;  inner loop end&lt;br /&gt;out loop end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let's see what the code in the inner loop and see what it is trying to do.&lt;br /&gt;Assume for a sec the center is located at (0, 0), the location is now&lt;br /&gt;_x = Math.cos(i) * Math.cos(j)*_path.FL;&lt;br /&gt;_y = Math.cos(i) * Math.sin(j)*_path.FL;&lt;br /&gt;&lt;br /&gt;As you know from high school math, you can draw a circle parametrically by using&lt;br /&gt;x = radius * Math.cos(theta)&lt;br /&gt;y = radius * Math.sin(theta)&lt;br /&gt;&lt;br /&gt;So the above equation is essentially:&lt;br /&gt;_x = Math.cos(i) * Math.cos(j)* radius;&lt;br /&gt;_y = Math.cos(i) * Math.sin(j)* radius;&lt;br /&gt;&lt;br /&gt;Notice the differing term between _x and _y is Math.cos(j) and Math.sin(j), which is responsible for drawing a circle.  The Math.cos(i) term oscillates from 1 to -1 and back, in effect this creates a series of concentric circles by shrinking the radius of the circle from "radius" to a fraction of it (and back).  All it takes now is to vary z from -1 to 1 for each circle using Math.sin or Math.cos and you have a 3D sphere!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8114175404453536074?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8114175404453536074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8114175404453536074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8114175404453536074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8114175404453536074'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/11/came-across-pretty-cool-way-of.html' title=''/><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-3663492.post-94278288336272518</id><published>2007-10-23T19:50:00.000-07:00</published><updated>2007-10-23T20:05:12.660-07:00</updated><title type='text'></title><content type='html'>In search of Flex source code...&lt;br /&gt;&lt;br /&gt;http://www.google.com/search?hl=en&amp;lr=&amp;q=inurl%3A%22%2Fsrcview%2Fsource%2F%22&amp;btnG=Search&lt;br /&gt;&lt;br /&gt;or in Google search box:&lt;br /&gt;inurl:"/srcview/source/"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-94278288336272518?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/94278288336272518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=94278288336272518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/94278288336272518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/94278288336272518'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/10/in-search-of-flex-source-code.html' title=''/><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-3663492.post-8846061594639292054</id><published>2007-10-02T02:08:00.000-07:00</published><updated>2007-10-02T02:11:26.497-07:00</updated><title type='text'></title><content type='html'>function domainCheck(url:String, domain:String) {&lt;br /&gt;  return url.indexOf(domain) != -1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;What's wrong with the above code, which attempts to check if url contains domain?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Answer: if url is undefined, indexOf returns undefined instead of -1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8846061594639292054?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8846061594639292054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8846061594639292054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8846061594639292054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8846061594639292054'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/10/function-domaincheckurlstring.html' title=''/><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-3663492.post-8108851426525151061</id><published>2007-08-09T22:30:00.000-07:00</published><updated>2007-08-09T22:31:12.178-07:00</updated><title type='text'></title><content type='html'>This pretty much sums up my view on CSS&lt;br /&gt;(My conversation with a friend -- One and the Same: c'est moi)&lt;br /&gt;&lt;br /&gt;One and The Same.. says:&lt;br /&gt;baby&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;any good CSS book?&lt;br /&gt;jamo says:&lt;br /&gt;ya&lt;br /&gt;jamo says:&lt;br /&gt;both eric meyers&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;i am pissed off&lt;br /&gt;jamo says:&lt;br /&gt;did i tell you&lt;br /&gt;jamo says:&lt;br /&gt;he autographed my books&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;that i am not pro at css yet&lt;br /&gt;jamo says:&lt;br /&gt;lol&lt;br /&gt;jamo says:&lt;br /&gt;css is touhg&lt;br /&gt;jamo says:&lt;br /&gt;baby&lt;br /&gt;jamo says:&lt;br /&gt;remember what i learned&lt;br /&gt;jamo says:&lt;br /&gt;master one thing&lt;br /&gt;jamo says:&lt;br /&gt;work with others&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;pls baby, eric meyer is just a person&lt;br /&gt;jamo says:&lt;br /&gt;i give up design&lt;br /&gt;jamo says:&lt;br /&gt;and work on CSS&lt;br /&gt;jamo says:&lt;br /&gt;and now PHP OOP&lt;br /&gt;jamo says:&lt;br /&gt;maybe i give up flash&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;pls baby&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;not PHP OOP&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;it's called POOP&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;you learned the wrong stuff baby&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;the future is RIA&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;i am still waiting for the ultimate CSS tool&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;that shit should be automated&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;visual stuff should never be coded&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;that's just dumb&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;coded, and then tweak to work on all browsers&lt;br /&gt;..One and The Same.. says:&lt;br /&gt;pls, there is gotta be a better way to live&lt;br /&gt;jamo says:&lt;br /&gt;what the&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8108851426525151061?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8108851426525151061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8108851426525151061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8108851426525151061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8108851426525151061'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/08/this-pretty-much-sums-up-my-view-on-css.html' title=''/><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-3663492.post-7446218639791853360</id><published>2007-08-09T20:51:00.001-07:00</published><updated>2007-08-09T20:52:19.382-07:00</updated><title type='text'></title><content type='html'>So you think you are so cool knowing Flash?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gizmodo.com/gadgets/clips/mr-woo-the-chinese-robot-farmer-287492.php?autoplay=true"&gt;mr-woo-the-chinese-robot-farmer&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7446218639791853360?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7446218639791853360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7446218639791853360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7446218639791853360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7446218639791853360'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/08/so-you-think-you-are-so-cool-knowing.html' title=''/><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-3663492.post-649281620962321661</id><published>2007-08-08T13:57:00.000-07:00</published><updated>2007-08-08T14:00:22.202-07:00</updated><title type='text'></title><content type='html'>I am ramping up on AS3 finally.  Will be adding notes about what I learn here.&lt;br /&gt;&lt;br /&gt;Found some good notes from razorberry, I am copying his content here (without permission) for easy peruse...but here is the &lt;a href="http://www.razorberry.com/blog/archives/2006/10/27/learning-as3-1/"&gt;link to the original article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Loader class doesn’t dispatch events, but Loader.contentLoaderInfo does.&lt;br /&gt;If you take a look at the API documentation for Loader.load(), you’ll notice that the different events dispatched after a load operation are listed, which lead me to think that the loader itself dispatches them. The fact is that you actually need to add your event listeners to Loader.contentLoaderInfo as shown in the example on that page.&lt;br /&gt;&lt;br /&gt;In order to use flash.utils.getDefinitionByName(), your class has to actually be compiled into the swf.&lt;br /&gt;Well, duh. Flash player will throw an error if it can’t find your class. This is easily solved by including a reference to the class in your source code somewhere.&lt;br /&gt;private var myClass:Class = com.package.to.MyClass;&lt;br /&gt;&lt;br /&gt;Removing a particular item from an array is easier!&lt;br /&gt;array.splice(array.indexOf(obj),1);&lt;br /&gt;&lt;br /&gt;Copying attributes of an xml node into an object is.. different.&lt;br /&gt;var o:Object = new Object();&lt;br /&gt;for each (var z:XML in node.@*)&lt;br /&gt;{&lt;br /&gt;o[String(z.name())] = z;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;You can check if a DisplayObject is actually attached to a display list by checking the stage property.&lt;br /&gt;If the stage property is null, it isn’t attached. This might seem obvious but if you’re trying to find out why something isn’t showing up.. the reason could be that you forgot to actually attach it with addChild().&lt;br /&gt;&lt;br /&gt;In Flex Builder’s Actionscript 3 projects, mx classes aren’t immediately available.&lt;br /&gt;You need to add the mx framework.swc to the project under Project-&gt;Properties-&gt;Flex Build Path-&gt;Library Path (tab)-&gt;Add SWC.. (button). The file is located at: ${FRAMEWORKS}/libs/framework.swc.&lt;br /&gt;&lt;br /&gt;AS3 base types don’t always default to null.&lt;br /&gt;Variables of certain base types such as Boolean and int are no longer ‘undefined’ when declared. This means you can no longer perform checks such as:&lt;br /&gt;if (myBoolean == undefined) doSomething(); since boolean values default to false.&lt;br /&gt;You can find a list of default values on this page in the documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-649281620962321661?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/649281620962321661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=649281620962321661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/649281620962321661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/649281620962321661'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/08/i-am-ramping-up-on-as3-finally.html' title=''/><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-3663492.post-647387834387476888</id><published>2007-08-08T12:39:00.000-07:00</published><updated>2007-08-08T13:05:13.406-07:00</updated><title type='text'></title><content type='html'>Recruiting process in technology firm is in need of serious change, and the problem is widespread in all companies, big or small, but more so with big ones.&lt;br /&gt;&lt;br /&gt;I had a phone call with Google recruiter this morning.  1 minute into the call, I realized I am talking to someone who is not technical at all.  The outcome of that is I start having to field standard questions like: what's your strongest language, how man years have you done this, etc.  If you ask the wrong questions, how often do you get the right answer?  The questions that are being asked these days simply do not help surface the superstar from the mediocre.&lt;br /&gt;&lt;br /&gt;Companies rely on hiring great people to become successful.  But technical companies have thus far rely on non-technical person to do the recruiting.  This is a major problem that requires serious innovation (or renovation?).  Good companies will naturally attract a lot of strong candidates, and the weak ones can later be filtered out by more technically oriented interviews.  One problem though, what happen if the really good ones have been filtered out prematurely?  The loss in revenue caused by such mistakes is hard to calculate, and it's being made as we speak, and common sense tells us the result of that is like walking over a pile of gold mine thinking it is just sand. (ok, maybe sand is more valuable these days given the ubiquity of computer chips in our lives)&lt;br /&gt;&lt;br /&gt;So what's the proposed solution to this?  While some might think that all we need is to train the recruiters more, there is simply no substitute for someone with actual experience in the field.  After all, would you ask your mother in-law to evaluate the authenticity of a Ming dynasty vase you just got from China?  &lt;br /&gt;&lt;br /&gt;One good solution for this is to have the technical lead goes through all submitted resume and make the initial phone calls.  While this might seem like an obvious waste of talent, it's not.  If all you want is to increase your headcount in your company, by all means, get anyone to do this.  But if what you want is the best person you can find that will help grow your company, you gotta do it yourself.  Of course, there are a lot of logistical issues to work out here, especially when you have a company with lots of teams looking for their own candidates.  But that's a small problem to solve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-647387834387476888?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/647387834387476888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=647387834387476888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/647387834387476888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/647387834387476888'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/08/recruiting-process-in-technology-firm.html' title=''/><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-3663492.post-570616156069272676</id><published>2007-07-24T10:18:00.001-07:00</published><updated>2007-07-24T10:18:46.564-07:00</updated><title type='text'></title><content type='html'>Thank you Microsoft! :)&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/activecontent/articles/devletter.html"&gt;http://www.adobe.com/devnet/activecontent/articles/devletter.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-570616156069272676?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/570616156069272676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=570616156069272676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/570616156069272676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/570616156069272676'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/thank-you-microsoft-httpwww.html' title=''/><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-3663492.post-7874331400275744999</id><published>2007-07-21T08:53:00.000-07:00</published><updated>2007-07-21T08:59:34.786-07:00</updated><title type='text'></title><content type='html'>Frame 0&lt;br /&gt;&lt;br /&gt;Where does your playhead lie when you finish loading a movieclip.&lt;br /&gt;Answer: Frame 0.  Try loading in a swf via MovieClipLoader.  In the onLoadComplete, make the mc stop playing: mc.stop();&lt;br /&gt;&lt;br /&gt;Now, if you try to target something that you have put on stage in frame 1, you will get a null reference.  Because at this point, the playhead is not in frame 1 yet.  So if you want to stop your loaded swf from playing,&lt;br /&gt;&lt;br /&gt;perhaps try&lt;br /&gt;1)   gotoAndStop(1) (I have found this not to work sometimes), &lt;br /&gt;&lt;br /&gt;2) do a two-liner: &lt;br /&gt;  mc.nextFrame(); &lt;br /&gt;  mc.stop(); &lt;br /&gt;&lt;br /&gt;3) put a stop frame in the original fla.&lt;br /&gt;&lt;br /&gt;Make sure you charge your client extra for knowing stuff like this (jk!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-7874331400275744999?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/7874331400275744999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=7874331400275744999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7874331400275744999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/7874331400275744999'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/frame-0-where-does-your-playhead-lie.html' title=''/><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-3663492.post-4503642055819233741</id><published>2007-07-21T08:35:00.000-07:00</published><updated>2007-07-21T08:50:22.163-07:00</updated><title type='text'></title><content type='html'>Have you gotten bitten in the ass by reference assigment lately?&lt;br /&gt;&lt;br /&gt;References are cool.  References are lightweight.  References are bulletproof.  Hmmm, not on the last one.&lt;br /&gt;&lt;br /&gt;Reference assignment can really bite you in the S if you are not careful of its use.  And more often times than not, because they are so darn convenient, you just wouldn't pay a second thought to using it...that's where the the ass-bitten timer starts counting down on you.&lt;br /&gt;&lt;br /&gt;Take a look at this scenario:&lt;br /&gt;&lt;br /&gt;Let's say you are building a puzzle game.  You have an app that's pulling in dynamic data from your server.  And you store it in your Game class property called puzzles.&lt;br /&gt;Fine, now you can access the data via an instance of your game class, say game.puzzles.&lt;br /&gt;&lt;br /&gt;Now, somewhere in your app, in order to make things easy to understand, you set a member variable to point to game.puzzles, like so:&lt;br /&gt;&lt;br /&gt;class PuzzleManager&lt;br /&gt;{&lt;br /&gt;  function PuzzleManager(game:Game)&lt;br /&gt;  {&lt;br /&gt;    _puzzles = game.puzzles;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  function getCompletedPuzzles()&lt;br /&gt;  {&lt;br /&gt;     var completedPuzzles = new Array();&lt;br /&gt;     for (var p in _puzzles)&lt;br /&gt;     {&lt;br /&gt;      ...check for score in each puzzle, pick out the ones with fullscore, etc.&lt;br /&gt;     }&lt;br /&gt;     &lt;br /&gt;     return completedPuzzles;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Everything was working cool, until one day, your puzzle data requirement has changed.  No longer do you just query your puzzle data at the start of the game.  Now the puzzle data gets updated every time you finish solving a puzzle.  That means game.puzzles points to a new set of contents every time you solve a puzzle.  All good?  No, your _puzzles member variable in PuzzleManager is still pointing to the old content, because reference in Actionscript acts more like pointer instead of reference in C++.  That is, you are free to change your reference to point to anything during its lifetime, and just because you are pointing at what B is pointing at now doesn't mean it will always remain that way.  At some point, B can be pointing at something else and you won't have a clue about it and remain pointing at the what B *USED TO* point to.&lt;br /&gt;&lt;br /&gt;The moral of the story is - Use local variable where possible.  Use reference assigment with extreme care.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-4503642055819233741?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/4503642055819233741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=4503642055819233741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4503642055819233741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/4503642055819233741'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/have-you-gotten-bitten-in-ass-by.html' title=''/><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-3663492.post-2789328002322749668</id><published>2007-07-20T09:29:00.000-07:00</published><updated>2007-07-20T09:36:55.236-07:00</updated><title type='text'></title><content type='html'>What's wrong with the following code and when will it go wrong?&lt;br /&gt;obj.addEventListener("event", Delegate.create(this, func));&lt;br /&gt;&lt;br /&gt;Answer:&lt;br /&gt;&lt;br /&gt;If you happen to call the code multiple times (say you enter the function more than once), then you are basically adding multiple delegate objects to the queue.  From the surface, it looks like only one function has been set to listen to the event.  But what actually happens is that you are adding multiple function object (aka delegate) to the event listening queue, and that will cause your event handler (func) to be called multiple times.&lt;br /&gt;&lt;br /&gt;So the right way to do this would be to either make sure your addEventListener only gets called once, but if it has to be in a place where it might be called multiple times, set up a delegate table to save the delegate objects and use it in your Delegate.create call later.&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;function init()&lt;br /&gt;{&lt;br /&gt;  _handlerTable = new Array();&lt;br /&gt;  _handlerTable["onReleaseHandler"] = Delegate.create(this, onReleaseHandler);&lt;br /&gt;  _handlerTable["handleSomethingHandler"] = Delegate.create(this, handleSomethingHandler);&lt;br /&gt;  ...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// function might be called multiple times&lt;br /&gt;function initButtonStates()&lt;br /&gt;{&lt;br /&gt;  obj.addEventListener("event", _handlerTable["onReleaseHandler"]);&lt;br /&gt;  ...&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-2789328002322749668?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/2789328002322749668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=2789328002322749668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2789328002322749668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2789328002322749668'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/whats-wrong-with-following-code-and.html' title=''/><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-3663492.post-29182388419196010</id><published>2007-07-19T14:02:00.000-07:00</published><updated>2007-07-19T15:11:17.602-07:00</updated><title type='text'></title><content type='html'>Plug and Play design&lt;br /&gt;&lt;br /&gt;We have heard about plug and play a lot with hardware interfacing with OS, and it has taken us years to get to a point where PnP is working well enough to justify its name.  What about software design?  When will it reach a point of true PnP?  These days a lot of people are buying into buzz words such as design patterns, MVC, etc.  The more important question when you design your app is, how well can your app (or parts of it) be plugged into another app with minimal hassles?  Will your app continue to function if it is loaded into another app?  What happen if the path of the other app is different?  Will your data files continue to load properly?  If not, how do you make it so that it's easy to accommodate such changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-29182388419196010?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/29182388419196010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=29182388419196010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/29182388419196010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/29182388419196010'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/plug-and-play-design-we-have-heard.html' title=''/><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-3663492.post-8595035116729707888</id><published>2007-07-18T13:37:00.000-07:00</published><updated>2007-07-18T13:38:36.325-07:00</updated><title type='text'></title><content type='html'>My conversation with coworker...about wife and computer&lt;br /&gt;&lt;br /&gt;Me [1:29 PM]:&lt;br /&gt;I believe you know computer better than your wife, oh yes i do&lt;br /&gt;Co [1:34 PM]:&lt;br /&gt;that's true, my wife doesn't know about computers  &lt;br /&gt;Me [1:34 PM]:&lt;br /&gt;i mean you know computer better than you know your wife  &lt;br /&gt;Me [1:34 PM]:&lt;br /&gt;pls say it ain't true&lt;br /&gt;Co [1:36 PM]:&lt;br /&gt;I've been with computers longer, so to speak&lt;br /&gt;Co [1:36 PM]:&lt;br /&gt;computers make more sense, more logical&lt;br /&gt;Co [1:36 PM]:&lt;br /&gt;and you can switch them off&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8595035116729707888?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8595035116729707888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8595035116729707888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8595035116729707888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8595035116729707888'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/my-conversation-with-coworker.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-537687972766912085</id><published>2007-07-18T13:15:00.001-07:00</published><updated>2007-07-18T13:28:12.798-07:00</updated><title type='text'></title><content type='html'>How often do you find yourself having to hunt down fonts for PC when you got a FLA file prepared for you on the Mac that uses Mac fonts?&lt;br /&gt;&lt;br /&gt;The whole font hunting affair is another product idea waiting to be implemented.&lt;br /&gt;&lt;br /&gt;Speaking of which, I installed a TradeGothic LT Bold Condensed No.20 today, but in Flash font mapping dialog's Substitute font listbox, I am not seeing it!&lt;br /&gt;&lt;br /&gt;After some fiddling, my coworker popped up the font, and below the big ass title name, you can see a Typeface name: TradeGothic LT CondEighteen!  Sure enough, that font name shows up in the Substitute font listbox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-537687972766912085?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/537687972766912085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=537687972766912085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/537687972766912085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/537687972766912085'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/how-often-do-you-find-yourself-having.html' title=''/><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-3663492.post-5098300108031538338</id><published>2007-07-18T10:03:00.001-07:00</published><updated>2007-07-21T08:53:14.293-07:00</updated><title type='text'></title><content type='html'>Have you thought about creating something that would be useful to the Flash folks out there?&lt;br /&gt;&lt;br /&gt;One such thing would be a layout manager that can do what FlexBuilder can do.  This is useful for app that changes in size in reaction to the browser window resize.  Everything within the app will stay in relation to each other depending on what anchor points they have, whether their aspect ratio should be maintained, etc.  Currently people are still rolling their own custom solutions for this.  I am sure someone will be happy to pay for something like this.&lt;br /&gt;&lt;br /&gt;Another thing that would be useful (especially for building sites for global corporations) is a framework or toolkit that allows people to easily switch from one language to another from within any "page" in the Flash application and the application state remains the same, only the content has now changed to the French content.  By content I don't mean just text changes, this can mean any changes in thestage contents.&lt;br /&gt;&lt;br /&gt;So there, start your company around these two things to boot. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5098300108031538338?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5098300108031538338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5098300108031538338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5098300108031538338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5098300108031538338'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/have-you-thought-about-creating.html' title=''/><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-3663492.post-5898743372813402760</id><published>2007-07-15T00:07:00.000-07:00</published><updated>2007-07-15T01:04:58.476-07:00</updated><title type='text'></title><content type='html'>There are at least two issues with the way EventDispatcher is being implemented right now (AS 2.0) -- one is that there is no way to assign priority to your event listener.  So if you want to have a listener execute before another, there is no way to do that.  Also, if you examine EventDispatcher closely, you will notice that event gets dispatched by looping through the queue list.  Using for ( ) construct in Actionscript actually retrieves things in reverse order, so the last thing that gets added to your event queue gets called first.&lt;br /&gt;&lt;br /&gt;Here is another interesting scenario with event dispatch.  Imagine you have two objects listening to a particular event.  Say if the first listener calls gotoAndPlay(), which causes certain movieclips to go out of existence, the second listener that refers to those movieclips will get undefined reference instead.  This problem won't exist if the  listeners are being called in a different order.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5898743372813402760?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5898743372813402760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5898743372813402760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5898743372813402760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5898743372813402760'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/there-are-at-least-two-issues-with-way.html' title=''/><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-3663492.post-2138011235098524618</id><published>2007-07-01T01:49:00.000-07:00</published><updated>2007-07-01T01:51:52.752-07:00</updated><title type='text'></title><content type='html'>I have frequently found a need to know who calls a particular method.  Unfortunately, this is not something that can be easily achieved with Flash right now.  It would be nice to have a facility such as trace("caller: " + this.caller) to print out the name of the obj.func that calls the method the trace statement is in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-2138011235098524618?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/2138011235098524618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=2138011235098524618' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2138011235098524618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/2138011235098524618'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/07/i-have-frequently-found-need-to-know.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-8647383877503265599</id><published>2007-06-23T18:20:00.000-07:00</published><updated>2007-06-23T18:36:00.134-07:00</updated><title type='text'></title><content type='html'>Behave yourself, substring.&lt;br /&gt;&lt;br /&gt;str.substring(start, end)&lt;br /&gt;&lt;br /&gt;According to the AS documentation, if end is -1, it's assumed to be 0.  So what does it mean when you have "abcdefg".substring(2, 0)?  It means that it will returning the substring starting at position and going backward excluding the last one.  So you get "ab" in this case.&lt;br /&gt;&lt;br /&gt;What happen if you have str.substring(2, undefined) or str.substring(2, undefined - 1); ? Surprisingly, the behavior is different in either case.&lt;br /&gt;undefined - 1 will give you an NaN.  In the first case, passing undefined behaves the same as not passing anything for end.  Passing NaN however, makes it behave as if you are passing in a negative number or 0.&lt;br /&gt;&lt;br /&gt;Why should I know all this, you ask?  Well, if you are using substring in a loop, with the end being a variable, then you must be aware of what will happen if that variable becomes undefined.  Of course, the best thing in most cases is to guard your code against that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8647383877503265599?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8647383877503265599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8647383877503265599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8647383877503265599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8647383877503265599'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/06/behave-yourself-substring.html' title=''/><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-3663492.post-5523807440209054307</id><published>2007-06-19T01:18:00.001-07:00</published><updated>2007-06-19T01:27:04.107-07:00</updated><title type='text'></title><content type='html'>I am working on a project that uses AMFPHP right now.  I was streaming in a fair amount of data, and things were performing quite well while running it locally.  When I finally looked at it online, the app was chugging (from 30fps down to 12 fps) while it's being side-scrolled.  After some investigations, I found out it was because I was instantiating 2000+ objects that contains the deserialized data.  As soon as I limit the objects down to 500 and keep the rest of the data in one string in CSV format, the app's performance went back up again.&lt;br /&gt;&lt;br /&gt;The moral of the story: Watch out not only on the number of movieclips you have on stage at any given time, but also how many objects you are creating.&lt;br /&gt;&lt;br /&gt;Right now the load time for the 2000+ datapoints (each taking ~25 bytes, not counting the extra bytes AMF uses while encoding it) is also taking quite a while -- considering that the data size is less than 100KB.  I am going to try using CSV string instead of the native data types in the AMFPHP end, gzip it and see how that goes.  Will follow up with a report on that end soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5523807440209054307?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5523807440209054307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5523807440209054307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5523807440209054307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5523807440209054307'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/06/i-am-working-on-project-that-uses.html' title=''/><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-3663492.post-3880268850600991582</id><published>2007-05-24T21:51:00.000-07:00</published><updated>2007-05-24T21:58:59.571-07:00</updated><title type='text'></title><content type='html'>Flash player attachMovie bug!&lt;br /&gt;&lt;br /&gt;Found a huge bug with attachMovie today.  I accidentally called attachMovie using a very long id, and that causes mc.hitTest call to fail when it should succeed.  It seems like globalToLocal call failed as well.  I am not sure what else fails as a result of the overly long id, but it seems like the id has caused a buffer overflow problem or some sort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-3880268850600991582?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/3880268850600991582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=3880268850600991582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3880268850600991582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/3880268850600991582'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/05/flash-player-attachmovie-bug-found-huge.html' title=''/><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-3663492.post-8831888061332881048</id><published>2007-04-01T12:24:00.000-07:00</published><updated>2007-04-02T09:09:38.693-07:00</updated><title type='text'></title><content type='html'>Creating virtual directory in tomcat is a little different than Apache.  All you have to do is add the following lines to your server.xml file under &lt;tomcat folder&gt;/conf.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; &amp;lt;Context path="/folder"&lt;br /&gt;                  docBase="C:/folder/"&lt;br /&gt;                  crossContext="false"&lt;br /&gt;                  debug="0"&lt;br /&gt;                  reloadable="true" &amp;gt;&lt;br /&gt; &amp;lt;/Context&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-8831888061332881048?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/8831888061332881048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=8831888061332881048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8831888061332881048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/8831888061332881048'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/04/creating-virtual-directory-in-tomcat-is.html' title=''/><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-3663492.post-5326143859567018904</id><published>2007-04-01T12:17:00.000-07:00</published><updated>2007-04-01T12:31:48.940-07:00</updated><title type='text'></title><content type='html'>Setting up Tomcat 6.0 to run with JDK6.0 today.  For some reason, Tomcat just wouldn't start.  A quick examination on the error log file gives this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[2007-04-01 12:03:23] [174  javajni.c] [error] The specified module could not be found.&lt;br /&gt;[2007-04-01 12:03:23] [947  prunsrv.c] [error] Failed creating java D:\Program Files\Java\jre1.6.0_01\bin\client\jvm.dll&lt;br /&gt;[2007-04-01 12:03:23] [1202 prunsrv.c] [error] ServiceStart returned 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I fired up file monitor (courtesy of Sysinternals), restarted tomcat, and clicked Capture.  Then I looked at the tomcat.exe section and found that Tomcat attempted to open a file called msvcr71.dll first in its own directory, couldn't find it, and proceeded to look in system32, etc. and failed in all instances.  msvcr71 is the C runtime library, you would think it should come with Windows, right?  (This file doesn't come with Windows possibly because of the DLL versioning hell so typical of Windows system).  Anyway, I did a search for that file and found it in the jdk 6.0 directory. I copied the file to Tomcat's bin folder, restarted Tomcat and everything worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-5326143859567018904?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/5326143859567018904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=5326143859567018904' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5326143859567018904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/5326143859567018904'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/04/setting-up-tomcat-6.html' title=''/><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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-117018992533216828</id><published>2007-01-30T12:41:00.000-08:00</published><updated>2007-04-01T12:29:17.869-07:00</updated><title type='text'></title><content type='html'>Detecting keycombo in actionscript:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;var keyListener:Object = new Object();&lt;br /&gt;keyListener.onKeyDown = function()&lt;br /&gt;{&lt;br /&gt; // Ctrl+d (Keycombo only works when testing in browser)&lt;br /&gt; if (Key.isDown(Key.CONTROL) &amp;&amp; Key.isDown(68))&lt;br /&gt; {&lt;br /&gt;           trace("control+d pressed");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;Key.addListener(keyListener);&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;NOTE: Be sure to turn off the keyboard shortcut by going to Control-&gt;Disable Keyboard Shortcuts when you are testing the movie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-117018992533216828?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/117018992533216828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=117018992533216828' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/117018992533216828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/117018992533216828'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2007/01/detecting-keycombo-in-actionscript-var.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-116648982575259273</id><published>2006-12-18T16:56:00.000-08:00</published><updated>2006-12-18T16:57:05.763-08:00</updated><title type='text'></title><content type='html'>I wrote a recursive trace function that works pretty well, and discovered that there is actually a class in Flash that will do that for you as well and it's called mx.data.binding.ObjectDumper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-116648982575259273?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/116648982575259273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=116648982575259273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116648982575259273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116648982575259273'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/12/i-wrote-recursive-trace-function-that.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-116450588598030743</id><published>2006-11-25T17:47:00.000-08:00</published><updated>2006-11-25T17:51:34.063-08:00</updated><title type='text'></title><content type='html'>Knowing the order of what's being called is very important when coding in Flash.  For example, you might create a call in a component's inspectable attribute, like this&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[Inspectable(type=Number, defaultValue=400)]&lt;br /&gt; public function set width(w:Number)&lt;br /&gt; {&lt;br /&gt;  __width = w;&lt;br /&gt;  child.refresh();&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You might need think your child.refresh will get call, when in fact at instantiation time, your child won't be called because when width was set, child has not been instantiated yet.  So you must call child.refresh( ) in your onLoad function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-116450588598030743?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/116450588598030743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=116450588598030743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116450588598030743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116450588598030743'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/11/knowing-order-of-whats-being-called-is.html' title=''/><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-3663492.post-116245238372141821</id><published>2006-11-01T23:15:00.000-08:00</published><updated>2006-11-01T23:26:23.733-08:00</updated><title type='text'></title><content type='html'>Actionscript 3&lt;br /&gt;&lt;br /&gt;Starting to experiment with AS3.&lt;br /&gt;At this point it's still not very straightforward to set up FlashDevelop to compile AS3 code.&lt;br /&gt;&lt;br /&gt;If you have Flex Builder, things becomes much easier.  To compile AS3, simple start an Actionscript 3 project.  To see trace output from your app, you must run it in debug mode.  (There should be a bug button in your toolbar)  You will also need to install a debug version of Flash Player 9 to debug your app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-116245238372141821?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/116245238372141821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=116245238372141821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116245238372141821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/116245238372141821'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/11/actionscript-3-starting-to-experiment.html' title=''/><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-3663492.post-115950262394005665</id><published>2006-09-28T21:03:00.000-07:00</published><updated>2006-09-28T21:03:43.953-07:00</updated><title type='text'></title><content type='html'>Nice Photoshop tutorials&lt;br /&gt;&lt;br /&gt;http://www.alanhettinger.com/tut.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-115950262394005665?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/115950262394005665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=115950262394005665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/115950262394005665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/115950262394005665'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/09/nice-photoshop-tutorials-httpwww.html' title=''/><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-3663492.post-114655107619868296</id><published>2006-05-01T23:24:00.000-07:00</published><updated>2006-05-10T15:36:54.836-07:00</updated><title type='text'></title><content type='html'>http://actionscriptcheatsheet.com/blog&lt;br /&gt;http://codebetter.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-114655107619868296?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/114655107619868296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=114655107619868296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114655107619868296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114655107619868296'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/05/httpactionscriptcheatsheet.html' title=''/><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-3663492.post-114535101901984140</id><published>2006-04-18T01:59:00.000-07:00</published><updated>2006-04-18T21:16:13.736-07:00</updated><title type='text'></title><content type='html'>Flash Training Ideas&lt;br /&gt;&lt;br /&gt;Training session for Server-side geeks&lt;br /&gt;Training session for Flash developers&lt;br /&gt;&lt;br /&gt;Type-checking: show AS1 and AS2 side-by-side.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Homework Idea: Starts simple, then progressively add more building blocks to the mix.&lt;br /&gt;Code projects should be practical and fun.&lt;br /&gt;&lt;br /&gt;Look at what MovieClipLoader does and try to implement one of your own using the following:&lt;br /&gt;OnEnterFrameBeacon&lt;br /&gt;BradcasterMX&lt;br /&gt;&lt;br /&gt;Write a preloader class&lt;br /&gt;&lt;br /&gt;Change the registration point of your symbol using actionscript&lt;br /&gt;&lt;br /&gt;Write a function to determine what version of flash you are using&lt;br /&gt;&lt;br /&gt;Create a flocking animation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-114535101901984140?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/114535101901984140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=114535101901984140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114535101901984140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114535101901984140'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/04/flash-training-ideas-training-session.html' title=''/><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-3663492.post-114300834524395529</id><published>2006-03-21T22:17:00.000-08:00</published><updated>2006-03-21T22:59:52.620-08:00</updated><title type='text'></title><content type='html'>Sometimes you want to output a table based on its column name, but you don't necessarily want to hardcode the column name in your code.&lt;br /&gt;&lt;br /&gt;Here is what you can do:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;cfloop index="column" list="#yourTable.ColumnList#" &gt;&lt;br /&gt; &lt;cfoutput&gt;#column#&lt;/cfoutput&gt;:&lt;br /&gt; &lt;cfloop query="yourTable"&gt;&lt;br /&gt;  &lt;cfoutput&gt;&lt;br /&gt;  #Evaluate(column)#&lt;br /&gt;  &lt;/cfoutput&gt;&lt;br /&gt; &lt;/cfloop&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/cfloop&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To take this one step further, you can use another table's field values (the field values must map to your column names of course) to control the output of your current table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;cfloop query="table1"&gt;&lt;br /&gt;  &lt;cfoutput&gt;#table2ColumnName#&lt;/cfoutput&gt;&lt;br /&gt;  &lt;/td&gt;&lt;br /&gt;  &lt;cfloop index="i" from="1" to="#table1.RecordCount#"&gt;&lt;br /&gt;   &lt;td&gt;&lt;br /&gt;   &lt;cfoutput&gt;&lt;br /&gt;  #Evaluate("table1.#getCorrelationCategories.table2ColumnName#[i]")#&lt;br /&gt;   &lt;/cfoutput&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/cfloop&gt;&lt;br /&gt; &lt;/cfloop&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-114300834524395529?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/114300834524395529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=114300834524395529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114300834524395529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/114300834524395529'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2006/03/sometimes-you-want-to-output-table.html' title=''/><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-3663492.post-113523170648328483</id><published>2005-12-21T22:01:00.000-08:00</published><updated>2005-12-21T22:08:26.496-08:00</updated><title type='text'></title><content type='html'>I was driving on I5, going to Vancouver today.  The rain was pouring down hard.  My front driving lights were totally out, so it was quite hard to drive under these conditions.  Then I realized I had been using others cars around me as "guiding lights", and I was dang grateful to those drivers.  That perspective shifts makes me realize that if you go out on the road today, and start imagining all the cars around you are there to guide you, help you, you will be much less stressful and disgruntled while driving on the road.  In fact, that perspective can be so powerful that you may start applying it to everything in life.  The sense of interconnectedness is heightened, and who knows, you might be the first road warrior Buddha in this century.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-113523170648328483?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/113523170648328483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=113523170648328483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113523170648328483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113523170648328483'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/12/i-was-driving-on-i5-going-to-vancouver.html' title=''/><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-3663492.post-113497580195882966</id><published>2005-12-18T23:01:00.000-08:00</published><updated>2005-12-18T23:03:21.970-08:00</updated><title type='text'></title><content type='html'>Ran into this problem today where I need to have a movieclip detects onRollOver/onRollOut (so it can create certain transition effects where another clip lays on top of it), and have its child clip detects onPress (because it contains buttons).  The problem is once the parent is assigned an event handler, the child can no longer receive any, even if the event is different.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-113497580195882966?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/113497580195882966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=113497580195882966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113497580195882966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113497580195882966'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/12/ran-into-this-problem-today-where-i.html' title=''/><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-3663492.post-113248123299489151</id><published>2005-11-20T02:05:00.000-08:00</published><updated>2005-11-20T02:10:32.036-08:00</updated><title type='text'></title><content type='html'>Been having some problem with my apache webserver lately, for some reason Apache would create another thread to listen to port 80, which makes no sense whatsoever, but netstat indicates that.  As a result, I had to restart Apache like 20 times a day.  Out of desperation, I wrote a little perl script to scan port 80 every minute, when it detects port 80 is down, it will attempt to restart Apache.  This will at least give me some time to figure out what's going on.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;&lt;br /&gt;use IO::Socket;&lt;br /&gt;&lt;br /&gt;my $socket= new IO::Socket::INET (&lt;br /&gt;  PeerAddr=&gt;"127.0.0.1:80",&lt;br /&gt;  Proto=&gt;'tcp',&lt;br /&gt;  Timeout=&gt;'1' ); # Timeout.&lt;br /&gt;&lt;br /&gt;if ($socket)&lt;br /&gt;{&lt;br /&gt; close $socket;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt; open(FILE, "&gt;&gt; portscan80.log");&lt;br /&gt; print FILE "restarting apache: ", scalar localtime(time()), "\n";&lt;br /&gt;&lt;br /&gt; open(NET, "net start|");&lt;br /&gt;&lt;br /&gt; my $running = 0;&lt;br /&gt; while (&lt;NET&gt;) {&lt;br /&gt;  chomp;&lt;br /&gt;  if (m/Apache2/) {&lt;br /&gt;   $running = 1;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; close FILE;&lt;br /&gt; close NET;&lt;br /&gt;&lt;br /&gt; system("net stop apache2") if $running;&lt;br /&gt; system("net start apache2");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;1;&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/3663492-113248123299489151?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/113248123299489151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=113248123299489151' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113248123299489151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113248123299489151'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/11/been-having-some-problem-with-my.html' title=''/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-113231112516275031</id><published>2005-11-18T02:51:00.000-08:00</published><updated>2005-11-18T02:52:05.170-08:00</updated><title type='text'></title><content type='html'>I tried out xray today, it's really nifty for debugging flash app!  http://labs.blitzagency.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-113231112516275031?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/113231112516275031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=113231112516275031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113231112516275031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/113231112516275031'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/11/i-tried-out-xray-today-its-really.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112908199406996912</id><published>2005-10-11T18:52:00.000-07:00</published><updated>2005-10-11T18:53:14.076-07:00</updated><title type='text'></title><content type='html'>Project Ideas:&lt;br /&gt;&lt;br /&gt;Code generator for Flash (spits out XML parser based on XML file you provide)&lt;br /&gt;Code framework for Flash - Physics, AI, Collision Detection, Math, SpecialFX, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112908199406996912?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112908199406996912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112908199406996912' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112908199406996912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112908199406996912'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/project-ideas-code-generator-for-flash.html' title=''/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112864107346882926</id><published>2005-10-06T16:01:00.000-07:00</published><updated>2005-10-06T16:34:05.083-07:00</updated><title type='text'></title><content type='html'>You know, my two year journey with Flash has been a painful but eventually gratifying one.  I think every person who is involved in creating something goes through this pain.  The pain of having to first acquire the skills, learn the tools of the trade, and finally reach a mastery level whereby you are endowed with the total freedom to create.  You and the tool have now become one.  You think in the tool, and the tool is an extension of your creative being -- that is, until the next upgrade.&lt;br /&gt;&lt;br /&gt;Here are some of the important ingredients for becoming skilled at something (in the computer industry at least):&lt;br /&gt;&lt;br /&gt;1) You gotta love it, otherwise forget it and go do something else.  Because otherwise everything I say below will be too painful to bear.&lt;br /&gt;2) Learn a ton and never stop learning.&lt;br /&gt;3) Learn from all sources.  Subscribe to forums, blogs, etc.&lt;br /&gt;4) Work on as many projects as you can.  Work on two or three projects at the same time if you can handle it.&lt;br /&gt;5) Read as much code as possible.&lt;br /&gt;6) Watch how others do it.  You can never be good just working by yourself. You need to work with people better than you.&lt;br /&gt;7) Teach.  Contribute to the community.  Just as a good blood circulation gives you a healthy body, giving your time to others keep the creative energy of the entire community flowing.  You will get better pay as an indirect result of that - not that it matters.&lt;br /&gt;8) Learn as many language as you can.  Just as knowing Latin can improve your French, knowing different languages increase your expressive power in any language you are currently using.&lt;br /&gt;&lt;br /&gt;For example: &lt;br /&gt;You want to assign a value to a variable if it is undefined -&lt;br /&gt;This is how normally people do it:&lt;br /&gt;&lt;br /&gt;if (num == undefined) num = 1;&lt;br /&gt;&lt;br /&gt;But if you know Perl, you will know this idiom:&lt;br /&gt;&lt;br /&gt;num = num || 1;  or  num ||= 1;&lt;br /&gt;&lt;br /&gt;(Of course, don't do it to a Boolean type, cuz then you will always get true!)&lt;br /&gt;&lt;br /&gt;9) Get a certification or something.  A certification may not get your a raise right away, but it lets you test your knowledge.  It forces you to strategize your learning too.&lt;br /&gt;10) Remember that your work is not you.  Once you are done with a creation, let it go.  Never attach your ego to it, never expand your ego with it.  Can you hear your ego says: "hot dang I am good"?  This can happen when you start finding yourself better than those around you (that's why these days people love to write bio long before they die).  Don't fall into this mental trap.  You are just freaking lucky to have a functioning brain that can think logically, that's all.  So get it over with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112864107346882926?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112864107346882926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112864107346882926' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112864107346882926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112864107346882926'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/you-know-my-two-year-journey-with.html' title=''/><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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112863936941451487</id><published>2005-10-06T15:51:00.000-07:00</published><updated>2005-10-06T15:56:09.420-07:00</updated><title type='text'></title><content type='html'>Just got done with GIJoe Hovercycle project for Hasbro.  It was an intense three plus weeks.  At the end of the project, I literally could not type anymore.  The illustrator and Flash designers I worked with are great at what they do.&lt;br /&gt;&lt;br /&gt;Check it out...&lt;br /&gt;http://www.hasbro.com/gijoe/default.cfm?page=games&lt;br /&gt;&lt;br /&gt;Click Ninja Hovercycle.  This is no Quake game but it can still be fun for an 8 year old GIJoe fan. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112863936941451487?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112863936941451487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112863936941451487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112863936941451487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112863936941451487'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/just-got-done-with-gijoe-hovercycle.html' title=''/><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-3663492.post-112863793909947237</id><published>2005-10-06T15:31:00.000-07:00</published><updated>2005-10-06T15:57:16.330-07:00</updated><title type='text'></title><content type='html'>Fun projec to do:&lt;br /&gt;Write a B+ Tree library that converts datafile into B+ tree and performs fast searches on it.  Such thing still does not exist in the actionscript world yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112863793909947237?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112863793909947237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112863793909947237' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112863793909947237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112863793909947237'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/fun-projec-to-do-write-b-tree-library.html' title=''/><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112856871346110705</id><published>2005-10-05T20:16:00.000-07:00</published><updated>2005-10-05T20:21:03.446-07:00</updated><title type='text'></title><content type='html'>Product ideas:&lt;br /&gt;&lt;br /&gt;Turn kids books into interactive flash apps.  Make a software that allows traditional kids book publishers to quickly publish a Flash version of their books by u sing this tool.&lt;br /&gt;&lt;br /&gt;Speed calculations - there are a good number of books out there teaching you how to perform speed calculations.  Knowing the technique is not enough, you need ample of practice, and making a Flash tool for this purpose can make a great companion tool for the book publishers.&lt;br /&gt;&lt;br /&gt;Search Engine for Flash code - Build a client tool where users can easily submit useful code snippets, and a server app where search engine can search based on keyword, topic, etc.  There is Napster for music lovers, we need a Napster for programmers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112856871346110705?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112856871346110705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112856871346110705' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112856871346110705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112856871346110705'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/product-ideas-turn-kids-books-into.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112856852112586625</id><published>2005-10-05T20:12:00.000-07:00</published><updated>2005-10-05T20:15:21.130-07:00</updated><title type='text'></title><content type='html'>Movieclip stored in an array:&lt;br /&gt;&lt;br /&gt;Let's say you create a series of movieclips and store it in an array.  Later when the movieclip has been removed via removeMovieClip, do you think you will get undefined when you check the array element that originally points to the mc?&lt;br /&gt;&lt;br /&gt;The answer is no.  Obviously, if you were to try to query any of the mc's properties such as _x and _y, you will get undefined, but is there a better way to make sure when an mc gets removed, all references to it automatically becomes undefined?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112856852112586625?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112856852112586625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112856852112586625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112856852112586625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112856852112586625'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/10/movieclip-stored-in-array-lets-say-you.html' title=''/><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-3663492.post-112677795261748700</id><published>2005-09-15T02:38:00.000-07:00</published><updated>2005-09-15T02:52:32.623-07:00</updated><title type='text'></title><content type='html'>You know, it's interesting to be in the tech industry, to see how people get excited over stupid little things.  It used to be that people have to force feed you with sales pitch, now people just flock to product events waiting to be fed with marketing stuff, why?  Because in our world the need to consume has now exceeded well beyond any marketer's dreams.  So much so that we longer think about anything that throws our way.  Take the Mac switching to Intel for example.  Isn't that an indirect admission that PowerPC sucks, but guess what, people can spin it around and make it appear otherwise.  So what's the big deal with switching to Intel?  Mac on Intel, isn't that pretty much means OSX can run on all PCs then?  It's no longer a hardware war but a software one.  People will buy whatever machine that suits to their needs and tastes, and can choose to run OSX, Windows or both.  Mac will continue to win people over for their tasteful product design, but it will be hard to command higher price based on just that alone.&lt;br /&gt;&lt;br /&gt;What about ipod nano?  The slogan makes me laugh.  Impossibly small?  What about the next version?  iPod pico, uncomfortably small?&lt;br /&gt;&lt;br /&gt;It's time that the marketers stop treating the consumers like morons.  Or maybe they can afford to as more and more people are growing up in an environment where consuming and accumulating junk has become a natural thing to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112677795261748700?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112677795261748700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112677795261748700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112677795261748700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112677795261748700'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/09/you-know-its-interesting-to-be-in-tech.html' title=''/><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-3663492.post-112650795903902204</id><published>2005-09-11T23:52:00.000-07:00</published><updated>2005-09-11T23:52:39.043-07:00</updated><title type='text'></title><content type='html'>These concept arts are out of this world...&lt;br /&gt;http://www.danielsimon.net&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112650795903902204?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112650795903902204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112650795903902204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112650795903902204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112650795903902204'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/09/these-concept-arts-are-out-of-this.html' title=''/><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-3663492.post-112486029724079168</id><published>2005-08-23T22:09:00.000-07:00</published><updated>2005-08-23T22:13:35.836-07:00</updated><title type='text'></title><content type='html'>From my recent experiments with frame rate on browsers, I found that the so-called  magic frame rate of 31fps doesn't actually work for me (maybe at one point it did).  On my machine, if I publish my movie at 30fps, I get about 22fps on IE.  Publishing it at 40, I get about 32.  Beyond 40, the frame rate actually goes down.  So make sure to check your actual browser's fps.  They don't behave the same way as a Flash player (or in test movie) would.  It certainly doesn't make sense to publish your movie at 60fps and hope the browser would push the fps toward that rate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112486029724079168?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112486029724079168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112486029724079168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112486029724079168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112486029724079168'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/from-my-recent-experiments-with-frame.html' title=''/><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-3663492.post-112486007327267189</id><published>2005-08-23T22:03:00.000-07:00</published><updated>2005-08-23T22:08:28.890-07:00</updated><title type='text'></title><content type='html'>Sometimes when you code collision detection in your game, you need the bounding box of your movieclip to be of different size or shape than the bound of the movieclip itself.  One quick way to do this is to create a new layer in your mc, say hitarea or whatever you like.  Insert a clip (call it mcHitArea) in that layer, resize it to your liking.  Within mcHitArea, put this code in the first frame of your actionscript layer:&lt;br /&gt;&lt;br /&gt;this._parent.hitarea = this;&lt;br /&gt;this._visible = false;&lt;br /&gt;&lt;br /&gt;There is no need to name the mcHitArea instance, because you will be using the MovieClip.hitArea property to get to it.&lt;br /&gt;&lt;br /&gt;if (mc.hitArea.hitTest(obj))&lt;br /&gt;{&lt;br /&gt;  ...&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112486007327267189?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112486007327267189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112486007327267189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112486007327267189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112486007327267189'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/sometimes-when-you-code-collision.html' title=''/><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-3663492.post-112465138420138479</id><published>2005-08-21T12:03:00.000-07:00</published><updated>2005-08-21T12:10:30.466-07:00</updated><title type='text'></title><content type='html'>Some people do their frame rate meter like this (at least I did when I first did it):&lt;br /&gt;&lt;br /&gt;this.frames = 0;&lt;br /&gt;this.startTime = getTimer();&lt;br /&gt;this.onEnterFrame = function() {&lt;br /&gt; this.frames++;&lt;br /&gt; var now = getTimer();&lt;br /&gt; var timeElapsed = (now-this.startTime)*0.001;&lt;br /&gt; // find fps and truncate results to 2 decimal&lt;br /&gt; places;&lt;br /&gt; var fps = Math.round(100*this.frames/timeElapsed)*0.01;&lt;br /&gt; txtFPS.text = "fps: "+fps;&lt;br /&gt;};&lt;br /&gt;stop();&lt;br /&gt;&lt;br /&gt;Can you see any problem with the code?&lt;br /&gt;&lt;br /&gt;The problem with the code is that it's getting the frame rate via the # of frames since the app starts divided by the time that has elapsed SINCE the app starts.  The problem with this approach is that you are only getting average fps, not the current fps.  So if your app has run for a few hours with a good frame rate, and suddenly the frame rate drops for a few seconds, you won't see it because the sudden drop in frame rate is "diluted" by the huge time elapse.&lt;br /&gt;&lt;br /&gt;What you need to do instead is to find out the frame counts in the last sec elapsed.&lt;br /&gt;&lt;br /&gt;this.frames = 0;&lt;br /&gt;this.startTime = getTimer();&lt;br /&gt;this.onEnterFrame = function()&lt;br /&gt;{&lt;br /&gt; this.frames++;&lt;br /&gt; var now = getTimer();&lt;br /&gt; var timeElapsed = (now - this.startTime) * 0.001;&lt;br /&gt; if (timeElapsed &gt;= 1.0)&lt;br /&gt; {&lt;br /&gt;  var fps = Math.round(this.frames / timeElapsed); &lt;br /&gt;  txtFPS.text = "fps: " + fps;&lt;br /&gt;  this.startTime = getTimer();&lt;br /&gt;  this.frames = 0;&lt;br /&gt; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112465138420138479?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112465138420138479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112465138420138479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112465138420138479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112465138420138479'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/some-people-do-their-frame-rate-meter.html' title=''/><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-3663492.post-112460666081328294</id><published>2005-08-20T23:44:00.000-07:00</published><updated>2005-08-20T23:44:20.816-07:00</updated><title type='text'></title><content type='html'>Wow...&lt;br /&gt;http://members.shaw.ca/flashprogramming/wisASLibrary/wis/doc/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112460666081328294?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112460666081328294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112460666081328294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112460666081328294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112460666081328294'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/wow.html' title=''/><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-3663492.post-112458765311115632</id><published>2005-08-20T18:27:00.000-07:00</published><updated>2005-08-20T18:27:33.116-07:00</updated><title type='text'></title><content type='html'>Neoswiff seems like a darn nice product for creating client side program using as2: http://www.globfx.com/products/neoswiff/samples.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112458765311115632?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112458765311115632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112458765311115632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112458765311115632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112458765311115632'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/neoswiff-seems-like-darn-nice-product.html' title=''/><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-3663492.post-112369557969304376</id><published>2005-08-10T10:36:00.000-07:00</published><updated>2005-08-10T10:39:39.696-07:00</updated><title type='text'></title><content type='html'>From my experiments with checking the progress of loadMovie, the most reliable progress check is as follows:&lt;br /&gt;&lt;br /&gt;Assuming you have set up an onEnter&lt;br /&gt;var prevBytesLoaded:Number = undefined;&lt;br /&gt;// setup onEnterFrameBeacon&lt;br /&gt;mx.transitions.OnEnterFrameBeacon.init();&lt;br /&gt;target.loadMovie(url);&lt;br /&gt;MovieClip["addListener"](this);&lt;br /&gt;&lt;br /&gt;// check progress&lt;br /&gt;function onEnterFrame()&lt;br /&gt;{&lt;br /&gt;var bytesLoaded = Math.round(_target.getBytesLoaded());&lt;br /&gt;var bytesTotal = Math.round(_target.getBytesTotal());&lt;br /&gt;if (bytesLoaded &gt; 0 &amp;&amp; bytesLoaded &gt;= bytesTotal)&lt;br /&gt;{&lt;br /&gt;  // Checking to make sure the bytesLoaded is the same as the one reported in &lt;br /&gt;  // previous frame is the most reliable way in getting an accurate value of bytesLoaded&lt;br /&gt;  if (bytesLoaded != prevBytesLoaded)&lt;br /&gt;  {&lt;br /&gt; trace(bytesLoaded + ", " + bytesTotal);&lt;br /&gt; prevBytesLoaded = bytesLoaded;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt; MovieClip["removeListener"](this);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112369557969304376?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112369557969304376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112369557969304376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112369557969304376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112369557969304376'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/from-my-experiments-with-checking.html' title=''/><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-3663492.post-112336239919174692</id><published>2005-08-06T13:56:00.000-07:00</published><updated>2005-08-06T14:11:10.566-07:00</updated><title type='text'></title><content type='html'>Dynamically constructing class in AS2.0&lt;br /&gt;&lt;br /&gt;When would you want to dynamically create a class?  You want to do it when you aren't sure at compile-time what class you want to instantiate.  For example, different levels of your games might have different types of characters, and you want the ability to read in an XML file that specifies what character class you should instantiate.&lt;br /&gt;&lt;br /&gt;For example, in level 1, you may want to do this:&lt;br /&gt;&lt;br /&gt;var hero = new Dragoon();&lt;br /&gt;&lt;br /&gt;level 2, you want to do this:&lt;br /&gt;&lt;br /&gt;var hero = new Zealot();&lt;br /&gt;&lt;br /&gt;Wouldn't it be nice if this is determined at run-time (e.g. via XML)?&lt;br /&gt;&lt;br /&gt;You can dynamically create a class (and instantiate an object off of it) using one of these syntax:&lt;br /&gt;&lt;br /&gt;function dynclass(o):Object&lt;br /&gt;{&lt;br /&gt;  var ctor:Function = o.class;&lt;br /&gt;  return new ctor();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;&lt;br /&gt;levelInfo = [ { name: level1, class: hero.dragoon }, { name: level2, class: hero.zealot } ];&lt;br /&gt;var obj = dynclass(levelInfo[currentlevel].class);&lt;br /&gt;&lt;br /&gt;The only caveat to this approach is that all the level info is hardcoded in your code.  If you need the flexibility of being able to specify all these in an XML file or from a database feed, if you need a way to instantiate a class based on string.&lt;br /&gt;&lt;br /&gt;function dynclass(classname:String)&lt;br /&gt;{&lt;br /&gt;  var ctor:Function = eval(classname);&lt;br /&gt;   return new ctor();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;e.g. var obj = dynclass("classpath.myclass");&lt;br /&gt;&lt;br /&gt;The second approach is definitely more flexible because it allows you to pass in a string, which means the user can literally type in the class name in a textbox to create something.&lt;br /&gt;&lt;br /&gt;The only caveat with the second approach is that you must make sure your swf compiles the class code into it by including a reference of the class somewhere in your timeline, like so:&lt;br /&gt;&lt;br /&gt;classpath.myclass;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112336239919174692?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112336239919174692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112336239919174692' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112336239919174692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112336239919174692'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/dynamically-constructing-class-in-as2.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-112336037442391940</id><published>2005-08-06T13:24:00.000-07:00</published><updated>2005-08-06T13:32:54.426-07:00</updated><title type='text'></title><content type='html'>EventDispatcher, BroadcasterMX, OnEnterFrameBeacon, TransitionManager and Tween are some of the most useful classes that came bundled with Flash MX 2004.  If nothing else, just reading the code can teach you a lot of coding techniques in AS2.&lt;br /&gt;&lt;br /&gt;If you want to add event dispatching functionality to your app, and you want the client to have the ability to listen on a specific message you are dispatching, use the mx.event.EventDispatcher class.  If you are interested in adding the ability to broadcast all messages to registered listeners, use mx.transitions.BroadcasterMX.&lt;br /&gt;&lt;br /&gt;If you want your class to receive onEnterFrame, use mx.transitions.OnEnterFrameBeacon.&lt;br /&gt;&lt;br /&gt;You can add these the broadcasting capabilities to your class like this:&lt;br /&gt;&lt;br /&gt;class MyClass&lt;br /&gt;{&lt;br /&gt;  static var _initBroadcaster = BroadcasterMX.initialize(MyClass.prototype, true);&lt;br /&gt;&lt;br /&gt;  // add function references so Broadcaster can decorate your class later&lt;br /&gt;  // by assiging the actual functions to these function references  &lt;br /&gt;  public var addListener:Function;&lt;br /&gt;  public var removeListener:Function;&lt;br /&gt;  public var broadcastMessage:Function;&lt;br /&gt;&lt;br /&gt;  ...&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112336037442391940?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112336037442391940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112336037442391940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112336037442391940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112336037442391940'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/eventdispatcher-broadcastermx.html' title=''/><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-3663492.post-112321316863486155</id><published>2005-08-04T20:37:00.000-07:00</published><updated>2005-08-04T20:39:28.640-07:00</updated><title type='text'></title><content type='html'>Interesting findings!&lt;br /&gt;&lt;br /&gt;If you have an init function in your child class that you call from your constructor, and you have another init function in your superclass that your superclass's constructor calls, calling init() in your superclass actually calls the child class init!&lt;br /&gt;&lt;br /&gt;Also, when trying to do this:&lt;br /&gt;&lt;br /&gt;var f:Function = eval(func);&lt;br /&gt;&lt;br /&gt;Make sure func is a simple string.  When I try to extract it from an array of object: eval(config[i].func), it won't work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112321316863486155?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112321316863486155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112321316863486155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112321316863486155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112321316863486155'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/interesting-findings-if-you-have-init.html' title=''/><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-3663492.post-112307007924530927</id><published>2005-08-03T04:54:00.000-07:00</published><updated>2005-08-03T04:54:39.246-07:00</updated><title type='text'></title><content type='html'>Cool sites:&lt;br /&gt;&lt;br /&gt;http://www.ultrashock.com/&lt;br /&gt;http://www.emllabs.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112307007924530927?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112307007924530927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112307007924530927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112307007924530927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112307007924530927'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/cool-sites-httpwww.html' title=''/><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-3663492.post-112305244235923323</id><published>2005-08-02T23:45:00.000-07:00</published><updated>2005-08-03T04:53:54.553-07:00</updated><title type='text'></title><content type='html'>The Flash Math Creativity published by FriendsOfEd has a lot of neat procedurally created arts, but the authors often time did a very poor job at explaining the code, especially the equations used.&lt;br /&gt;&lt;br /&gt;Here is one example by David Hirmes on Spring: http://www.friendsofed.com/fmc/davidhirmes/index.html#&lt;br /&gt;&lt;br /&gt;Most of the math code for movement are usually simplified version of physics, if you take the time to understand it, you will realize they are in fact very easy to understand and derive.  Often times it's the code the obscures the simplicity of things (bad coding that is).&lt;br /&gt;&lt;br /&gt;onClipEvent (load) {&lt;br /&gt; xHome = _x;&lt;br /&gt; yHome = _y;&lt;br /&gt; zHome = 100;&lt;br /&gt; springiness = .2;&lt;br /&gt; decay = .8;&lt;br /&gt;}&lt;br /&gt;onClipEvent (enterFrame) {&lt;br /&gt; y = ((yHome-_y)*springiness)+(y*decay);&lt;br /&gt; _y += y;&lt;br /&gt; x = ((xHome-_x)*springiness)+(x*decay);&lt;br /&gt; _x += x;&lt;br /&gt; z = ((zHome-_xscale)*springiness)+(z*decay);&lt;br /&gt; _xscale += z;&lt;br /&gt; _yscale += z;&lt;br /&gt; _alpha = z+100;&lt;br /&gt;}&lt;br /&gt;onClipEvent (keyDown) {&lt;br /&gt; _x = random(550)-225;&lt;br /&gt; _y = random(400)-200;&lt;br /&gt; z = random(200)-100;&lt;br /&gt;}&lt;br /&gt;onClipEvent (mouseDown) {&lt;br /&gt; _x = random(550)-225;&lt;br /&gt; _y = random(400)-200;&lt;br /&gt; z = random(200)-100;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The only code that might be confusing to you are these: (and if you are not confused, you should be reading something else now)&lt;br /&gt;y = ((yHome-_y)*springiness)+(y*decay);&lt;br /&gt;_y += y;&lt;br /&gt;x = ((xHome-_x)*springiness)+(x*decay);&lt;br /&gt;_x += x;&lt;br /&gt;z = ((zHome-_xscale)*springiness)+(z*decay);&lt;br /&gt;&lt;br /&gt;What is it trying to do here?  the equation for x and y are pretty much the same.  They both represent the x and y component of the velocity.  A velocity is a vector that has a direction and a magnitude (the speed).  It basically tells us how fast something moves in a particular direction (signifies by x, y)&lt;br /&gt;&lt;br /&gt;In the code above, _y is the new position has been assigned to your movieclip when you mousedown, yHome is the position (the target position).  yHome - _y forms a vector (if you remember your vector math), which is basically gives the direction for the movieclip to move toward and how fast it should move -- the further away it is from the dest, the faster it moves. It's then scaled down by a factor called the springiness.  The springiness component is what will cause an overshoot.  If springiness is 1, then you will get an oscillation around the yHome location.  &lt;br /&gt;And you should remember form your highschool physics that v = u + at, meaning velocity at time t equals the sum of the initial velocity and the acceleration (assuming constant) over a period of time t.  So in the above equation, you see v = at, but where is the time t?  The time t is inherent in the equation because this code is being executed every frame.  Assuming your movie always plays at 10fps, then the time t is 1/10 = 0.1 msec.  In other words the movement code is frame dependent.&lt;br /&gt;&lt;br /&gt;What about the second component y*decay?  That's to make sure the velocity will get slower and slower as time goes by a factor of "decay".  If you don't have this component, things will continue to oscillate between the destination point and never slow down.&lt;br /&gt;&lt;br /&gt;Once you figure out the velocity, it's then time to add it to the current location _y, this corresponds to your highschool physics equation: s(t) = ut (where u is the average velocity)&lt;br /&gt;&lt;br /&gt;y = ((yHome-_y)*springiness)+(y*decay);&lt;br /&gt;_y += y;&lt;br /&gt;&lt;br /&gt;The above code might be easier to understand if written like this:&lt;br /&gt;&lt;br /&gt;vy = (ynew - _y) * factor;  // gets the current velocity, slow it down by a certain factor since it's executing every 100msec&lt;br /&gt;_y += vy;     // gets the new location&lt;br /&gt;vy *= decay;  // reduces vy as time goes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112305244235923323?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112305244235923323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112305244235923323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112305244235923323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112305244235923323'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/08/flash-math-creativity-published-by.html' title=''/><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-3663492.post-112219042906681689</id><published>2005-07-24T00:32:00.000-07:00</published><updated>2005-07-24T00:35:31.426-07:00</updated><title type='text'></title><content type='html'>Now that's one hell of a work from a great interactive designer:&lt;br /&gt;www.ferryhalim.com&lt;br /&gt;&lt;br /&gt;Looks like he is Indonesian (hey I can read this language :))&lt;br /&gt;http://www.master.web.id/tutorial/wawancara/25-08-00.htm&lt;br /&gt;&lt;br /&gt;Here are the pages he goes to:&lt;br /&gt;&lt;br /&gt;www.coolhomepages.com&lt;br /&gt;www.flashkit.com&lt;br /&gt;www.were-here.com (forum coolsites-nya)&lt;br /&gt;www.flashplanet.com (site of the week-nya)&lt;br /&gt;www.flashchallenge.com&lt;br /&gt;www.linkdup.com&lt;br /&gt;www.flazoom.com&lt;br /&gt;www.master.web.id&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112219042906681689?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112219042906681689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112219042906681689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112219042906681689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112219042906681689'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/now-thats-one-hell-of-work-from-great.html' title=''/><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-3663492.post-112114571154958965</id><published>2005-07-11T22:21:00.000-07:00</published><updated>2005-07-11T22:21:51.553-07:00</updated><title type='text'></title><content type='html'>Awesome site on learning...can use a lot of this for building Flash tools that help learning&lt;br /&gt;http://www.studygs.net/lrnstudy.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112114571154958965?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112114571154958965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112114571154958965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112114571154958965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112114571154958965'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/awesome-site-on-learning.html' title=''/><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-3663492.post-112112757707378269</id><published>2005-07-11T17:19:00.000-07:00</published><updated>2005-07-11T17:19:37.076-07:00</updated><title type='text'></title><content type='html'>Project idea: A Flash tool that trains you to listen to morse code&lt;br /&gt;http://www.learnmorsecode.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112112757707378269?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112112757707378269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112112757707378269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112112757707378269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112112757707378269'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/project-idea-flash-tool-that-trains.html' title=''/><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-3663492.post-112084688463527300</id><published>2005-07-08T11:20:00.000-07:00</published><updated>2005-07-08T11:21:24.640-07:00</updated><title type='text'></title><content type='html'>A useful Flash utility idea: Extract certain types of resources out of all swf files in a folder.  Good exercise to learn about the swf file format as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112084688463527300?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112084688463527300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112084688463527300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112084688463527300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112084688463527300'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/useful-flash-utility-idea-extract.html' title=''/><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-3663492.post-112081638006945939</id><published>2005-07-08T02:51:00.000-07:00</published><updated>2005-07-08T02:53:00.073-07:00</updated><title type='text'></title><content type='html'>Esc-shortcuts in Actionscript&lt;br /&gt;&lt;br /&gt;I never use the actionscript panel to do actionscript, so didn't discover this until today...&lt;br /&gt;&lt;br /&gt;"Press Escape and a shortcut key. For example, Escape+st adds a stop action. (To view a list of shortcut keys, select View Esc Shortcut Keys in the Actions panel pop-up menu; select this option again to hide the list.)"&lt;br /&gt;&lt;br /&gt;It's time to go over the whole Flash doc...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112081638006945939?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112081638006945939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112081638006945939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112081638006945939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112081638006945939'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/esc-shortcuts-in-actionscript-i-never.html' title=''/><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-3663492.post-112067891152493635</id><published>2005-07-06T12:41:00.000-07:00</published><updated>2005-07-06T12:41:51.526-07:00</updated><title type='text'></title><content type='html'>Now this is just downright cool:&lt;br /&gt;&lt;br /&gt;Page turning:&lt;br /&gt;http://www.iparigrafika.hu/pageflip/&lt;br /&gt;http://www.oreillynet.com/pub/a/javascript/2004/09/03/flashhacks.html?page=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112067891152493635?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112067891152493635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112067891152493635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112067891152493635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112067891152493635'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/now-this-is-just-downright-cool-page.html' title=''/><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-3663492.post-112054056812868312</id><published>2005-07-04T19:15:00.000-07:00</published><updated>2005-07-04T22:16:08.136-07:00</updated><title type='text'></title><content type='html'>Should read up on these tuts:&lt;br /&gt;&lt;br /&gt;http://www.flash-mx.com/flash/progressbar.cfm&lt;br /&gt;http://www.macromedia.com/devnet/mx/flash/articles/tweening.html&lt;br /&gt;http://www.actionscript.org/tutorials/advanced/Tween-Easing_Classes_Documented/index.shtml&lt;br /&gt;http://www.timwalling.com/actionscript/32/mxtransitionstween-extended/&lt;br /&gt;&lt;br /&gt;http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&amp;file=00002429.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112054056812868312?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112054056812868312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112054056812868312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112054056812868312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112054056812868312'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/should-read-up-on-these-tuts-httpwww.html' title=''/><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-3663492.post-112052819704875250</id><published>2005-07-04T18:48:00.000-07:00</published><updated>2005-07-04T18:49:57.053-07:00</updated><title type='text'></title><content type='html'>Someone mentioned this about frame rate used for loaded movies, which is good to know.  I always thought when you loadMovie, the framerate used is the host movie frame rate.&lt;br /&gt;&lt;br /&gt;"normally, the host frame rate is used..unless the movie you load in has streaming sound stuck into a frame, then it uses the framerate of the loaded movie."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-112052819704875250?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/112052819704875250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=112052819704875250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112052819704875250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/112052819704875250'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/07/someone-mentioned-this-about-frame.html' title=''/><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-3663492.post-111995034638155466</id><published>2005-06-28T02:17:00.000-07:00</published><updated>2005-06-28T02:19:06.386-07:00</updated><title type='text'></title><content type='html'>Tutorial on how to create a component:&lt;br /&gt;&lt;br /&gt;http://www.macromedia.com/support/flash/applications/creating_comps/&lt;br /&gt;http://www.macromedia.com/devnet/mx/flash/articles/create_components_4.0.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-111995034638155466?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/111995034638155466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=111995034638155466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111995034638155466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111995034638155466'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/06/tutorial-on-how-to-create-component.html' title=''/><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3663492.post-111994948263316010</id><published>2005-06-28T02:04:00.000-07:00</published><updated>2005-06-28T02:04:42.633-07:00</updated><title type='text'></title><content type='html'>Breaking apart bitmap...&lt;br /&gt;&lt;br /&gt;What's going on behind the scene?&lt;br /&gt;&lt;br /&gt;http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&amp;file=00000285.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-111994948263316010?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/111994948263316010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=111994948263316010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111994948263316010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111994948263316010'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/06/breaking-apart-bitmap.html' title=''/><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-3663492.post-111994946275369257</id><published>2005-06-28T01:47:00.000-07:00</published><updated>2005-06-28T02:04:22.756-07:00</updated><title type='text'></title><content type='html'>Changing registration point of an mc&lt;br /&gt;&lt;br /&gt;if you already have a simbol.. double clik on it (so you enter it for editing), then choose: Window/Design Panels/align .. click on the "to stage" icon and then select the simbol elemnts and align them as you want..&lt;br /&gt;&lt;br /&gt;or highlight the symbol and click F8 (you will end up with a new symbol)&lt;br /&gt;&lt;br /&gt;Click symbol on stage and press Ctrl+i (Info pane) which also displays the 9 point registration grid.&lt;br /&gt;&lt;br /&gt;http://www.shinstudio.com/blog/2004/01/transformation_position.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3663492-111994946275369257?l=waspflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://waspflash.blogspot.com/feeds/111994946275369257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3663492&amp;postID=111994946275369257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111994946275369257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3663492/posts/default/111994946275369257'/><link rel='alternate' type='text/html' href='http://waspflash.blogspot.com/2005/06/changing-registration-point-of-mc-if.html' title=''/><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></feed>
