<?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-6060689703404909182</id><updated>2012-02-16T16:15:03.285-08:00</updated><title type='text'>Flash and Flex</title><subtitle type='html'>Says what it is on the tin.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-1819386960891836944</id><published>2011-07-11T14:52:00.000-07:00</published><updated>2011-07-11T14:55:58.320-07:00</updated><title type='text'>Performance Performance Performance</title><content type='html'>Just how well can we measure performance?...Check this link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-1819386960891836944?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://java.dzone.com/articles/joshua-bloch-performance?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29' title='Performance Performance Performance'/><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/1819386960891836944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=1819386960891836944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1819386960891836944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1819386960891836944'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2011/07/performance-performance-performance.html' title='Performance Performance Performance'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-446379033900433392</id><published>2011-01-04T17:03:00.000-08:00</published><updated>2011-01-04T17:03:53.801-08:00</updated><title type='text'>briangenisio / ActionLinq / wiki / Home – Bitbucket</title><content type='html'>&lt;a href="https://bitbucket.org/briangenisio/actionlinq/wiki/Home"&gt;briangenisio / ActionLinq / wiki / Home – Bitbucket&lt;/a&gt;&lt;br /&gt; briangenisio / ActionLinq  http://HouseOfBilz.com/&lt;br /&gt;&lt;br /&gt;ActionLinq is a complete implementation of LINQ extensions for ActionScript 3. Although it follows ActionScript idoms, all of the expected functionality is there including deferred execution&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-446379033900433392?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://bitbucket.org/briangenisio/actionlinq/wiki/Home' title='briangenisio / ActionLinq / wiki / Home – Bitbucket'/><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/446379033900433392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=446379033900433392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/446379033900433392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/446379033900433392'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2011/01/briangenisio-actionlinq-wiki-home.html' title='briangenisio / ActionLinq / wiki / Home – Bitbucket'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-671110953053364795</id><published>2010-12-13T02:49:00.000-08:00</published><updated>2010-12-13T02:53:32.355-08:00</updated><title type='text'>Code Metrics with Sonar</title><content type='html'>Sonar is a web service that allows you to perform code analysis on projects it has a plugin for flex projects that utilises FlexPMD, FlexCPD and FlexMetrics that can give you insight on the quality of the code in your project worth a look.&lt;br /&gt;&lt;br /&gt;http://www.sonarsource.org/the-flex-plugin-for-sonar-a-further-step-toward-multi-language-support/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-671110953053364795?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sonarsource.org/the-flex-plugin-for-sonar-a-further-step-toward-multi-language-support/' title='Code Metrics with Sonar'/><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/671110953053364795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=671110953053364795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/671110953053364795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/671110953053364795'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/12/code-metrics-with-sonar.html' title='Code Metrics with Sonar'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-6868923953684183431</id><published>2010-10-06T19:03:00.001-07:00</published><updated>2010-10-06T19:03:50.605-07:00</updated><title type='text'>Get The Blueprint</title><content type='html'>Blueprint is a plugin for Adobe® Flex® Builder™ 3 and Flash® Builder™ 4 that allows users to query for Adobe Flex and Adobe Flash code examples found on the Web directly inside of the development environment.&lt;br /&gt;&lt;br /&gt;Give it a try http://labs.adobe.com/technologies/blueprint/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-6868923953684183431?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://labs.adobe.com/technologies/blueprint/' title='Get The Blueprint'/><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/6868923953684183431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=6868923953684183431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6868923953684183431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6868923953684183431'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/10/get-blueprint.html' title='Get The Blueprint'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-6904993492254028408</id><published>2010-04-27T09:35:00.001-07:00</published><updated>2010-04-30T02:43:40.041-07:00</updated><title type='text'>ErrorTestUtils</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;br /&gt;package domain.utils&lt;br /&gt;{&lt;br /&gt; public class ErrorTestUtils&lt;br /&gt; {&lt;br /&gt;  public function ErrorTestUtils()&lt;br /&gt;  {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public static function isErrorThrown(callMethodThatCausesError:Function,errorReport:String,args:Array):Boolean&lt;br /&gt;  {&lt;br /&gt;   var errorThrown:Boolean = false;&lt;br /&gt;   try&lt;br /&gt;   {&lt;br /&gt;    callMethodThatCausesError.apply(null,args);&lt;br /&gt;   }&lt;br /&gt;   catch(e:Error)&lt;br /&gt;   {&lt;br /&gt;    errorThrown = (e.message == errorReport)&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return errorThrown;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;} &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/errortestutils"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-6904993492254028408?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/6904993492254028408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=6904993492254028408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6904993492254028408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6904993492254028408'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/errortestutils.html' title='ErrorTestUtils'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-4399781166318253951</id><published>2010-04-27T09:23:00.001-07:00</published><updated>2010-04-27T09:23:29.703-07:00</updated><title type='text'>Testing Thrown Error Handling</title><content type='html'>&lt;div class='posterous_autopost'&gt;A quick way to test thrown errors are behaving as expected.&lt;p /&gt;[Test]&lt;br /&gt;public function testErrorHandling():void&lt;br /&gt;        {&lt;br /&gt;            &lt;p /&gt;            var errorThrown:Boolean = false;&lt;br /&gt;            &lt;br /&gt;            try&lt;br /&gt;             {&lt;br /&gt;                callMethodThatCausesError();&lt;br /&gt;            }&lt;br /&gt;            catch (e:Error)&lt;br /&gt;            {&lt;br /&gt;                errorThrown = (e.message == &amp;#39;SomeClass.ERROR_IN_DATA_MESSAGE&amp;#39;);&lt;br /&gt;             }&lt;br /&gt;            &lt;br /&gt;            assertTrue(errorThrown);&lt;br /&gt;        } &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/testing-thrown-error-handling"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-4399781166318253951?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/4399781166318253951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=4399781166318253951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4399781166318253951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4399781166318253951'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/testing-thrown-error-handling.html' title='Testing Thrown Error Handling'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7838281014925828814</id><published>2010-04-27T08:27:00.001-07:00</published><updated>2010-04-27T08:27:00.856-07:00</updated><title type='text'>Doc File Import Folder So you can move asdocs from pc to pc.</title><content type='html'>&lt;div class='posterous_autopost'&gt;C:\Documents and Settings\Lyndon Fasanya\Application Data\Doc.EE57A57224685151543546B0367A0BD876BF88FF.1\Local Store &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/doc-file-import-folder-so-you-can-move-asdocs"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7838281014925828814?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7838281014925828814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7838281014925828814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7838281014925828814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7838281014925828814'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/doc-file-import-folder-so-you-can-move.html' title='Doc File Import Folder So you can move asdocs from pc to pc.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-3299418653195626170</id><published>2010-04-24T10:10:00.001-07:00</published><updated>2010-04-24T10:10:34.540-07:00</updated><title type='text'>Improving application performance.</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;span style=""&gt;&lt;h3 style=""&gt;Ways to improve app performance!!!!&lt;/h3&gt;&lt;ul style=""&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Introduction&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_02.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Architecting Flex Applications That Perform Well&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_03.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;A Note About Flash Players&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_04.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using Layouts, Hierarchy, and Containment Properly&lt;/a&gt;&lt;ul style=""&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_04.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Avoid Nesting Containers Many Levels Deep&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_04.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Absolute Positioning and Sizing&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_04.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Use Grid Containers Wisely&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_05.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Examples of Common Container Redundancies to Avoid&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_06.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using Deferred Instantiation to Improve Perceived Performance&lt;/a&gt;&lt;ul style=""&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_06.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Navigators Have Built-In Deferred Instantiation&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_06.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Progressive Layout—Queued Creation of Components&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_07.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Handling Large Data Sets&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_08.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Playing Complex Effects Smoothly&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_09.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Achieving Great Performance with Runtime Styles&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_09.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using Dynamically Repeating Controls for Better Performance&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style=""&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_09.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using the HorizontalList and TileList Controls&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_09.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Improving Repeater Performance&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_10.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Improving Performance of Charting Components&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Performance Tuning and Profiling Your Own Flex Application&lt;/a&gt;&lt;ul style=""&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using Runtime Shared Libraries&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using the ActionScript Profiler&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Calculating the Application Initialization Time&lt;/a&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Using&amp;nbsp;&lt;code style="font-family: Courier New, Courier, monospace; color: rgb(0, 0, 0); background-color: rgb(230, 240, 250); font-size: 1.1em !important; font-weight: inherit; line-height: 1.6em;"&gt;getTimer()&lt;/code&gt;&amp;nbsp;to Time Component and Data Gestures&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="letter-spacing: normal; line-height: 1.6em; font-size: 1em; padding-bottom: 0.5em;"&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/client_perf_12.html" style="color: rgb(0, 102, 204); text-decoration: none; line-height: 1.6em;"&gt;Support and Feedback&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;Sent from my iPhone &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/improving-application-performance"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-3299418653195626170?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/3299418653195626170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=3299418653195626170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3299418653195626170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3299418653195626170'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/improving-application-performance.html' title='Improving application performance.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-3027793760900297283</id><published>2010-04-20T16:06:00.001-07:00</published><updated>2010-04-20T16:06:23.626-07:00</updated><title type='text'>Channels endpoints and destinations, AIR and Flex, courtesy of weborb and midnightcoders</title><content type='html'>&lt;div class='posterous_autopost'&gt;Endpoint - this is the URL where AIR/Flex app sends remoting/messaging requests to&lt;p /&gt;  Channel - a concept encapsulating the endpoint. Also identifies classes managing the channel on both client and server sides&lt;p /&gt;  Destination - identifies a server-side class exposed by WebORB. Used by Flex/AIR client to target method invocations against the referenced class.&lt;p /&gt;  Channels are configured in WEB-INF/flex/services-config.xml (and&lt;br /&gt; weborb-services-config.xml if present in your system). Every channel has the &amp;quot;endpoint&amp;quot; element. For example, you have the following&lt;br /&gt; channel definition:&lt;p /&gt;  &amp;lt;channel-definition id=&amp;quot;my-amf&amp;quot;&lt;br /&gt; class=&amp;quot;mx.messaging.channels.AMFChannel&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;endpoint uri=&amp;quot;weborb.php&amp;quot;&lt;br /&gt; class=&amp;quot;flex.messaging.endpoints.AMFEndpoint&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;properties&amp;gt;&lt;br /&gt; &amp;lt;polling-enabled&amp;gt;false&amp;lt;/polling-enabled&amp;gt;&lt;br /&gt; &amp;lt;/properties&amp;gt;&lt;br /&gt; &amp;lt;/channel-definition&amp;gt;&lt;p /&gt;  Notice the following line:&lt;p /&gt;  &amp;lt;endpoint uri=&amp;quot;weborb.php&amp;quot;&lt;p /&gt;  &amp;quot;weborb.php&amp;quot; here is actually a URL. The reason it does not look like a URL is because it is relative. If your Flex app is loaded from&lt;p /&gt;  &lt;a href="http://myhost/foo/AwesomeApp.html"&gt;http://myhost/foo/AwesomeApp.html&lt;/a&gt;&lt;p /&gt;  then your application will be sending remoting requests to the following URL:&lt;p /&gt;  &lt;a href="http://myhost/foo/weborb.php"&gt;http://myhost/foo/weborb.php&lt;/a&gt;&lt;p /&gt;  (This is the reason why WebORB for PHP requires that you put weborb.php into the same directory containing your SWF.)&lt;p /&gt;  So how does the client know what channel to use. The answer lies in remoting-config.xml. This is where all the destinations are defined.&lt;br /&gt; Most of the destinations do not explicitly reference the channels. For those, there&amp;#39;s a special declaration at the top that establishes the default channel:&lt;p /&gt;  &amp;lt;default-channels&amp;gt;&lt;br /&gt; &amp;lt;channel ref=&amp;quot;my-amf&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/default-channels&amp;gt;&lt;p /&gt;  As a result, when you create a RemoteObject to talk to GenericDestination, remoting requests will be sent to the endpoint defined in the my-amf channel. &lt;p /&gt;  Now, suppose you need to get AIR to talk to WebORB. Obviously the my-amf channel will not work for you since the endpoint is relative.&lt;br /&gt; You can definitely change the endpoint to be an absolute URL and it will solve the problem. Alternatively, take a look at the channel with&lt;br /&gt; the following ID:&lt;p /&gt;  my-air-amf&lt;p /&gt;  Notice the endpoint URL for that channel is absolute. Now take a look at the GenericAIRDestination destination in remoting-config.xml. You will see it references the my-air-amf channel. As a result, if your&lt;br /&gt; AIR application uses &amp;quot;GenericAIRDestination&amp;quot;, your AIR client will talk to WebORB and send remoting requests to the endpoint URL from the&lt;br /&gt; my-air-amf channel. It is important to adjust the URL to reflect the location of your WebORB instance. 		 &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/channels-endpoints-and-destinations-air-and-f"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-3027793760900297283?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/3027793760900297283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=3027793760900297283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3027793760900297283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3027793760900297283'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/channels-endpoints-and-destinations-air.html' title='Channels endpoints and destinations, AIR and Flex, courtesy of weborb and midnightcoders'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-2948288043145440912</id><published>2010-04-15T15:06:00.001-07:00</published><updated>2010-04-15T15:06:10.500-07:00</updated><title type='text'>Using Enterprise Architect to create a Class Model from an AS project.</title><content type='html'>&lt;div class='posterous_autopost'&gt;1. Open EA the application.&lt;br /&gt;2. From the app (if plugin in Eclipse select the Enterprise Architect option then ) Create a New Project.&lt;br /&gt;3. Navigate to where you want your project to placed.&lt;br /&gt;4. Your Project Browser perspective should be open and you&amp;#39;ll see a tab called Model this is the project you&amp;#39;ve just created  a project is a collection models in EA. Select it.&lt;br /&gt;5. Right Click on this and select &amp;#39;Add a new model&amp;#39; using wizard.&lt;br /&gt;6. Check the class model box. and Ok this, a class model icon will appear under the model icon in your project.&lt;br /&gt;7. Right Click on the Class Model folder looking icon (not the blue one).&lt;br /&gt;8. Mouse Over Code Engineering and select &amp;#39;Import Source Directory&amp;#39;.&lt;br /&gt;9. In the dialog box select ActionScript ensure file extension are .as and the options you prefer&lt;br /&gt;10. Choose the Root Directory you want to generate a Class Model for.&lt;p /&gt;11. To generate rtf documentation select the icon 4th from right on the toolbar with OR select F8 it looks like lines with ticks and crosses although there are two of them. &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/using-enterprise-architect-to-create-a-class"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-2948288043145440912?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/2948288043145440912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=2948288043145440912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2948288043145440912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2948288043145440912'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/using-enterprise-architect-to-create.html' title='Using Enterprise Architect to create a Class Model from an AS project.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-2855789238066621027</id><published>2010-04-15T06:57:00.001-07:00</published><updated>2010-04-15T06:57:37.626-07:00</updated><title type='text'>Mockito Test Structures</title><content type='html'>&lt;div class='posterous_autopost'&gt;/*    Generalisation for verifying a method (testedFunction) of system under test (sut)&lt;br /&gt;            is called that depends on a method (someOperation) of (dependency) &lt;br /&gt;            &lt;br /&gt;            var dependency:Dependency = Dependency(mock(Dependency));&lt;br /&gt;             // given&lt;br /&gt;            var sut:Sut = new Sut(dependency);&lt;br /&gt;            // when&lt;br /&gt;            sut.testedFunction(10);&lt;br /&gt;            // then&lt;br /&gt;            mockito.verify().that(dependency.someOperation(10));&lt;br /&gt;         */ &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/mockito-test-structures"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-2855789238066621027?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/2855789238066621027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=2855789238066621027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2855789238066621027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2855789238066621027'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/mockito-test-structures.html' title='Mockito Test Structures'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-2316614392619187208</id><published>2010-04-13T08:02:00.001-07:00</published><updated>2010-04-13T08:02:57.501-07:00</updated><title type='text'>Comprehensive Documentation</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/2SfbphCKDDwcfREwRny2HMAfQjDQcsBsMtdUDg8gzPnKmwtFv4YmCHprpFvU/as3langref.png.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/fasanya/wyWy6n9iBiuHkBhWZ6wck7fXIFG4MBNC7uy5HWpzTbcjYtrfW7QUrmKYLh7m/as3langref.png.scaled.500.jpg" width="500" height="312"/&gt;&lt;/a&gt; &lt;p&gt;Now there&amp;#39;s a one stop shop, for the Flash Platform API checkout the ActionScript 3.0 Reference for the Adobe Flash Platform.&lt;p /&gt;&lt;a href="http://help.adobe.com/en_US/FlashPlatform//reference/actionscript/3/index.html?filter_flex=4"&gt;http://help.adobe.com/en_US/FlashPlatform//reference/actionscript/3/index.html?filter_flex=4&lt;/a&gt;&lt;p /&gt; &lt;p /&gt;&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/comprehensive-documentation"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-2316614392619187208?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/2316614392619187208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=2316614392619187208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2316614392619187208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2316614392619187208'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/comprehensive-documentation.html' title='Comprehensive Documentation'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-6286533972105968229</id><published>2010-04-10T17:53:00.001-07:00</published><updated>2010-04-10T17:53:32.528-07:00</updated><title type='text'>flash flex links and resources courtesy of jexchen hence some chinese characters!</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;h2&gt;&lt;span style=""&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fp%3D58&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgkeN3-k1Y1xtlKQPg099LDem1iXw" title="Permanent Link: Flash, Flex resources collected Shiquandabu" rel="bookmark"&gt;Flash, Flex resources collected Shiquandabu&lt;/a&gt;&lt;/span&gt; &lt;/h2&gt;&lt;div class="allinfos"&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;07月23rd, 2008 &lt;span class="category"&gt;Posted in &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D4&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhibaBGJSR2faW5ArjerrxJCEO-Npg" title="Show all log ActionScript3" rel="category"&gt;ActionScript3&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D20&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgnbOUkaY06iOdpbRf4IpxPnsEhDw" title="Collection of all the logs show" rel="category"&gt;Collection&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D16&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg4OgGCDK2yIJ4YlMDhUiCroFJehA" title="Show all the logs Flash" rel="category"&gt;Flash&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D5&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhj2GH2xo_AYSk1WNBUR12IGYwqjGQ" title="Show all log Flex3" rel="category"&gt;Flex3&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D34&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgX2FiNSQd8fk_gJcROpYgIsfdLEg" title="Show all the logs Lib" rel="category"&gt;Lib&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D1&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgBBJPLYzJk9Oqjiubrxz2ldc2eEA" title="Show all log RIA" rel="category"&gt;RIA&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D35&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhBTERvpZJaRB1KdW3hfZY1LKxUmQ" title="Show all the logs Tool" rel="category"&gt;Tool&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; July 23rd, 2008 &lt;span class="category"&gt;Posted in &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D4&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhibaBGJSR2faW5ArjerrxJCEO-Npg" title="Show all log ActionScript3" rel="category"&gt;ActionScript3&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D20&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgnbOUkaY06iOdpbRf4IpxPnsEhDw" title="Collection of all the logs show" rel="category"&gt;Collection&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D16&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg4OgGCDK2yIJ4YlMDhUiCroFJehA" title="Show all the logs Flash" rel="category"&gt;Flash&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D5&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhj2GH2xo_AYSk1WNBUR12IGYwqjGQ" title="Show all log Flex3" rel="category"&gt;Flex3&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D34&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgX2FiNSQd8fk_gJcROpYgIsfdLEg" title="Show all the logs Lib" rel="category"&gt;Lib&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D1&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgBBJPLYzJk9Oqjiubrxz2ldc2eEA" title="Show all log RIA" rel="category"&gt;RIA&lt;/a&gt; , &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/%3Fcat%3D35&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhBTERvpZJaRB1KdW3hfZY1LKxUmQ" title="Show all the logs Tool" rel="category"&gt;Tool&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;断断续续收集了Flash、Flex相关的不少资源，但好多存着都没看，加上自己没太整理好，反而到想 找的时候找不到。&lt;/span&gt; Intermittent collection of Flash, Flex-related resources, it has a lot of deposit with no view, coupled with his order not too good, but can not find the time to looking.&lt;/span&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;在此做个&amp;ldquo;十 全大补&amp;rdquo;，来个群英汇萃，一来方便自己，二来大家也可参考参考。&lt;/span&gt; This to be a &amp;quot;Shiquandabu&amp;quot; to a Beat Festival, the one convenience, and second, you can refer to the reference.&lt;/span&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;这些资源均来自网上，感谢这些作者们。&lt;/span&gt; These resources are from the Internet, for these authors.&lt;/span&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size: small; color: rgb(0, 64, 128);"&gt;不断更新中&amp;hellip;&amp;hellip;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: small; color: rgb(0, 64, 128);"&gt;Constantly update ... ...&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="font-size: small; color: rgb(0, 64, 128);"&gt;[毕竟是自己辛苦整理的，转载的话请注明出处： &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgQHSDOaDHEuRqq9w7GjlLdR9xFyg"&gt;http://www. &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;jexchen&lt;/b&gt; .com&lt;/a&gt;谢谢]&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: small; color: rgb(0, 64, 128);"&gt;[After all their hard order, and reproduced if the source is acknowledged: &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.jexchen.com/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgQHSDOaDHEuRqq9w7GjlLdR9xFyg"&gt;http://www. &lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;jexchen.&lt;/b&gt; COM&lt;/a&gt; Thank you]&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;APIs、Libs、Components&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;APIs, Libs, Components&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;1、 &lt;strong&gt;as3ebaylib&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;1,&lt;/strong&gt; as3ebaylib&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ebaylib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjrmmf-cMllpstTqSCBoQghP4GONA" title="http://code.google.com/p/as3ebaylib/"&gt;http://code.google.com/p/as3ebaylib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ebaylib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjrmmf-cMllpstTqSCBoQghP4GONA" title="http://code.google.com/p/as3ebaylib/"&gt;http://code.google.com/p/as3ebaylib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;2、 &lt;strong&gt;as3youtubelib&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;2,&lt;/strong&gt; as3youtubelib&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3youtubelib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg1s7AK9vIAFiz4_z4bsYG6Ghjy7Q" title="http://code.google.com/p/as3youtubelib/"&gt;http://code.google.com/p/as3youtubelib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3youtubelib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg1s7AK9vIAFiz4_z4bsYG6Ghjy7Q" title="http://code.google.com/p/as3youtubelib/"&gt;http://code.google.com/p/as3youtubelib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;3、 &lt;strong&gt;as3flickrlib&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;3,&lt;/strong&gt; as3flickrlib&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3flickrlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgRs9b9x52rFB_PN7JyXcNiGawfAA" title="http://code.google.com/p/as3flickrlib/"&gt;http://code.google.com/p/as3flickrlib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3flickrlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgRs9b9x52rFB_PN7JyXcNiGawfAA" title="http://code.google.com/p/as3flickrlib/"&gt;http://code.google.com/p/as3flickrlib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;4、 &lt;strong&gt;Yahoo ASTRA Flash Components&lt;/strong&gt;&lt;/span&gt; 4, &lt;strong&gt;Yahoo ASTRA Flash Components&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://developer.yahoo.com/flash/astra-flash/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhijY1i3VGzMYTSKRJtKFVx1FeG6_Q" title="http://developer.yahoo.com/flash/astra-flash/"&gt;http://developer.yahoo.com/flash/astra-flash/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://developer.yahoo.com/flash/astra-flash/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhijY1i3VGzMYTSKRJtKFVx1FeG6_Q" title="http://developer.yahoo.com/flash/astra-flash/"&gt;http://developer.yahoo.com/flash/astra-flash/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;5、 &lt;strong&gt;facebook-as3&lt;/strong&gt;&lt;/span&gt; 5, &lt;strong&gt;facebook-as3&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/facebook-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgIuZcW8BehpAnq72KFnfqlIQuebA"&gt;http://code.google.com/p/facebook-as3/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/facebook-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgIuZcW8BehpAnq72KFnfqlIQuebA"&gt;http://code.google.com/p/facebook-as3/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;6、 &lt;strong&gt;as3awss3lib&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;6,&lt;/strong&gt; as3awss3lib&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3awss3lib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgH1UCvuVc-d3LaHRucDRJJHBQVbg"&gt;http://code.google.com/p/as3awss3lib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3awss3lib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgH1UCvuVc-d3LaHRucDRJJHBQVbg"&gt;http://code.google.com/p/as3awss3lib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;7、 &lt;strong&gt;Adobe ActionScript 3:resources:apis:libraries&lt;/strong&gt; （官方，包括corelib、FlexUnit、Flickr、Mappr、RSS and Atom libraries、Odeo、YouTube）&lt;/span&gt; 7, &lt;strong&gt;Adobe ActionScript 3: resources: apis: libraries&lt;/strong&gt; (government, including the corelib, FlexUnit, Flickr, Mappr, RSS and Atom libraries, Odeo, YouTube)&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhil6qenVB-OIk9OYIRePCUdj4Il4Q" title="http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries"&gt;http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhil6qenVB-OIk9OYIRePCUdj4Il4Q" title="http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries"&gt;http://labs.adobe.com/wiki/index.php/ActionScript_3:resources:apis:libraries&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;8、 &lt;strong&gt;Tweener&lt;/strong&gt;用 于过渡与切换的一组动画库&lt;/span&gt; 8, &lt;strong&gt;Tweener&lt;/strong&gt; for the transition and to switch a group of animation library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/tweener/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgcul1dOslEB2i-5B0jx2NYOVKCzg"&gt;http://code.google.com/p/tweener/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/tweener/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgcul1dOslEB2i-5B0jx2NYOVKCzg"&gt;http://code.google.com/p/tweener/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;9、 &lt;strong&gt;uicomponents-as3&lt;/strong&gt;一 组轻量级的AS3 UI组件库&lt;/span&gt; &lt;strong&gt;9, uicomponents-as3&lt;/strong&gt; a lightweight AS3 UI component library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/uicomponents-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjToGehpddg_1dvWX7gUjH33SXbrg"&gt;http://code.google.com/p/uicomponents-as3/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/uicomponents-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjToGehpddg_1dvWX7gUjH33SXbrg"&gt;http://code.google.com/p/uicomponents-as3/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;10、 &lt;strong&gt;as3ds&lt;/strong&gt; AS3的数据结构实现&lt;/span&gt; &lt;strong&gt;10,&lt;/strong&gt; as3ds AS3 data structures to achieve&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ds/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh0GNTJYLB61-Wa0PJOFWX2hOZ7Iw"&gt;http://code.google.com/p/as3ds/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ds/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh0GNTJYLB61-Wa0PJOFWX2hOZ7Iw"&gt;http://code.google.com/p/as3ds/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;11、 &lt;strong&gt;mecheye-as3-libraries&lt;/strong&gt;一 组主要用于Flash 游戏开发的AS3库&lt;/span&gt; &lt;strong&gt;11, mecheye-as3-libraries&lt;/strong&gt; of a major group of game development for Flash AS3 library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/mecheye-as3-libraries/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhrLr4I9BHcaP2U8Me-PutELwseYw" title="http://code.google.com/p/mecheye-as3-libraries/"&gt;http://code.google.com/p/mecheye-as3-libraries/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/mecheye-as3-libraries/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhrLr4I9BHcaP2U8Me-PutELwseYw" title="http://code.google.com/p/mecheye-as3-libraries/"&gt;http://code.google.com/p/mecheye-as3-libraries/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;12、 &lt;strong&gt;XIFF&lt;/strong&gt;一 套XMPP协议的AS3实现&lt;/span&gt; &lt;strong&gt;12,&lt;/strong&gt; XIFF AS3 implementation of a XMPP protocol&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhinuolcPxcgcFlqLCLz-DkVEK7gyw" title="http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/"&gt;http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhinuolcPxcgcFlqLCLz-DkVEK7gyw" title="http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/"&gt;http://svn.igniterealtime.org/svn/repos/xiff/branches/xiff_as3_flexlib_beta1/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;13、 &lt;strong&gt;FZip&lt;/strong&gt;一 套AS3库，可用作对ZIP压缩文件的载入、修改与创建&lt;/span&gt; &lt;strong&gt;13,&lt;/strong&gt; FZip a AS3 library can be used as the load on the ZIP compressed files, modify and create&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://codeazur.com.br/lab/fzip/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgLr9uSkR2BPX1XculiHxdehqffsA" title="http://codeazur.com.br/lab/fzip/"&gt;http://codeazur.com.br/lab/fzip/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://codeazur.com.br/lab/fzip/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgLr9uSkR2BPX1XculiHxdehqffsA" title="http://codeazur.com.br/lab/fzip/"&gt;http://codeazur.com.br/lab/fzip/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;14、 &lt;strong&gt;FlexLib&lt;/strong&gt;一 套开源的Flex界面组件库&lt;/span&gt; &lt;strong&gt;14,&lt;/strong&gt; FlexLib a set of open source Flex component library interface&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/flexlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhHk3O7IzXkeA36yifv3_ve-Hj7NA"&gt;http://code.google.com/p/flexlib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/flexlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhHk3O7IzXkeA36yifv3_ve-Hj7NA"&gt;http://code.google.com/p/flexlib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;15、 &lt;strong&gt;AnimatedGIfLoader Flex Component&lt;/strong&gt;可载入GIF的Flex组件&lt;/span&gt; &lt;strong&gt;15,&lt;/strong&gt; AnimatedGIfLoader &lt;strong&gt;Flex Component&lt;/strong&gt; can be loading GIF in Flex component&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://dougmccune.com/blog/animatedgifloader-flex-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjTzxTvQpsUK6A3gFw0ZLxNJEBFxw" title="http://dougmccune.com/blog/animatedgifloader-flex-component/"&gt;http://dougmccune.com/blog/animatedgifloader-flex-component/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://dougmccune.com/blog/animatedgifloader-flex-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjTzxTvQpsUK6A3gFw0ZLxNJEBFxw" title="http://dougmccune.com/blog/animatedgifloader-flex-component/"&gt;http://dougmccune.com/blog/animatedgifloader-flex-component/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;16、 &lt;strong&gt;goplayground&lt;/strong&gt;一 套轻量级的，可用创建属于你自己的AS3 动画工具的库&lt;/span&gt; &lt;strong&gt;16,&lt;/strong&gt; goplayground a lightweight, can be used to create your own AS3 animation tools library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/goplayground/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgNgv-nHqEJE4Jo1a73UoijljVTcw" title="http://code.google.com/p/goplayground/"&gt;http://code.google.com/p/goplayground/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/goplayground/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgNgv-nHqEJE4Jo1a73UoijljVTcw" title="http://code.google.com/p/goplayground/"&gt;http://code.google.com/p/goplayground/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;17、 &lt;strong&gt;AlivePDF&lt;/strong&gt;开 源的用于PDF创建的AS3库&lt;/span&gt; &lt;strong&gt;17,&lt;/strong&gt; AlivePDF open source library for PDF creation in AS3&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.alivepdf.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh22Ox4Ro-GqMIzx6MbO1UgmZuXHA" title="http://www.alivepdf.org/"&gt;http://www.alivepdf.org/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.alivepdf.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh22Ox4Ro-GqMIzx6MbO1UgmZuXHA" title="http://www.alivepdf.org/"&gt;http://www.alivepdf.org/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;18、 &lt;strong&gt;jwopitz-lib&lt;/strong&gt;一 组开源的Flex用户界面组件&lt;/span&gt; &lt;strong&gt;18, jwopitz-lib&lt;/strong&gt; a set of open source Flex user interface components&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/jwopitz-lib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhIr3hB6EAarZM8qSd9N19Mfrb6SA" title="http://code.google.com/p/jwopitz-lib/"&gt;http://code.google.com/p/jwopitz-lib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/jwopitz-lib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhIr3hB6EAarZM8qSd9N19Mfrb6SA" title="http://code.google.com/p/jwopitz-lib/"&gt;http://code.google.com/p/jwopitz-lib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;19、 &lt;strong&gt;as3crypto&lt;/strong&gt; AS3实现的一套加密库，包括多种加密算法&lt;/span&gt; &lt;strong&gt;19,&lt;/strong&gt; as3crypto AS3 implementation of a cryptographic library, including a variety of encryption algorithms&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3crypto/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhx9tKPnAnc_13b8da1gwplWqhXzg" title="http://code.google.com/p/as3crypto/"&gt;http://code.google.com/p/as3crypto/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3crypto/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhx9tKPnAnc_13b8da1gwplWqhXzg" title="http://code.google.com/p/as3crypto/"&gt;http://code.google.com/p/as3crypto/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;20、 &lt;strong&gt;flare&lt;/strong&gt;一 套强大的可视化交互的AS3类库&lt;/span&gt; 20, &lt;strong&gt;flare&lt;/strong&gt; of a powerful visual interactive AS3 library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://flare.prefuse.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiLbvzV8tzpdVG5WABKj5A0qnlgyA" title="http://flare.prefuse.org/"&gt;http://flare.prefuse.org/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://flare.prefuse.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiLbvzV8tzpdVG5WABKj5A0qnlgyA" title="http://flare.prefuse.org/"&gt;http://flare.prefuse.org/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;21、 &lt;strong&gt;SWFAddress&lt;/strong&gt;一 小而强大的库，可以为Flash和Ajax提供深链接的功能&lt;/span&gt; &lt;strong&gt;21,&lt;/strong&gt; SWFAddress a small but powerful library for Flash and Ajax features to provide deep links&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.asual.com/swfaddress/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjQLadbG70GkzWx4wkSvHBWxjeJxg" title="http://www.asual.com/swfaddress/"&gt;http://www.asual.com/swfaddress/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.asual.com/swfaddress/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjQLadbG70GkzWx4wkSvHBWxjeJxg" title="http://www.asual.com/swfaddress/"&gt;http://www.asual.com/swfaddress/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;22、 &lt;strong&gt;SWFObject&lt;/strong&gt;用 于嵌入Flash，Adobe官方也认可了&lt;/span&gt; 22, &lt;strong&gt;SWFObject&lt;/strong&gt; to embed Flash, Adobe has officially recognized&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/swfobject/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhglDjJzHNPs4OA1lJP4BZfEDy0xGg" title="http://code.google.com/p/swfobject/"&gt;http://code.google.com/p/swfobject/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/swfobject/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhglDjJzHNPs4OA1lJP4BZfEDy0xGg" title="http://code.google.com/p/swfobject/"&gt;http://code.google.com/p/swfobject/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;23、 &lt;strong&gt;ulse Particle System&lt;/strong&gt;一套开源的强大的AS3动态粒子系统&lt;/span&gt; &lt;strong&gt;23,&lt;/strong&gt; ulse &lt;strong&gt;Particle System&lt;/strong&gt; a set of open source AS3 powerful dynamic particle system&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/pulse-particle/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjhcm6k5vK2FMqZhbBvyTRqLttz3w" title="http://code.google.com/p/pulse-particle/"&gt;http://code.google.com/p/pulse-particle/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/pulse-particle/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjhcm6k5vK2FMqZhbBvyTRqLttz3w" title="http://code.google.com/p/pulse-particle/"&gt;http://code.google.com/p/pulse-particle/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.rogue-development.com/pulseParticles.html&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjIYh0L0hKkMUY1dLKXEAXVMuwOMg" title="http://www.rogue-development.com/pulseParticles.html"&gt;http://www.rogue-development.com/pulseParticles.html&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.rogue-development.com/pulseParticles.html&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjIYh0L0hKkMUY1dLKXEAXVMuwOMg" title="http://www.rogue-development.com/pulseParticles.html"&gt;http://www.rogue-development.com/pulseParticles.html&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;24、 &lt;strong&gt;SpringGraph Flex Component&lt;/strong&gt;&lt;/span&gt; 24, &lt;strong&gt;SpringGraph Flex Component&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://mark-shepherd.com/blog/springgraph-flex-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhj3iHuJwrIFCX5FkMqoZj9jYVXnig" title="http://mark-shepherd.com/blog/springgraph-flex-component/"&gt;http://mark-shepherd.com/blog/springgraph-flex-component/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://mark-shepherd.com/blog/springgraph-flex-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhj3iHuJwrIFCX5FkMqoZj9jYVXnig" title="http://mark-shepherd.com/blog/springgraph-flex-component/"&gt;http://mark-shepherd.com/blog/springgraph-flex-component/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;25、 &lt;strong&gt;GoASAP&lt;/strong&gt; AS3动画库&lt;/span&gt; &lt;strong&gt;25,&lt;/strong&gt; GoASAP AS3 Animation Library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/goasap/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjwZhhCPHGClCz8DO6YNDWFxcguGQ" title="http://code.google.com/p/goasap/"&gt;http://code.google.com/p/goasap/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/goasap/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjwZhhCPHGClCz8DO6YNDWFxcguGQ" title="http://code.google.com/p/goasap/"&gt;http://code.google.com/p/goasap/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.goasap.org/index.html&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjoRQfwxxvs9ByJKhaxjsH0PDKm5A" title="http://www.goasap.org/index.html"&gt;http://www.goasap.org/index.html&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.goasap.org/index.html&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjoRQfwxxvs9ByJKhaxjsH0PDKm5A" title="http://www.goasap.org/index.html"&gt;http://www.goasap.org/index.html&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;26、 &lt;strong&gt;asaplibrary&lt;/strong&gt;一 套开源的Flash Actionscript3.0 RIA库&lt;/span&gt; &lt;strong&gt;26,&lt;/strong&gt; asaplibrary a set of open source Flash Actionscript3.0 RIA Library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/asaplibrary/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg_3JJ94RpsCRWHnDOLv-qHGGUnkA" title="http://code.google.com/p/asaplibrary/"&gt;http://code.google.com/p/asaplibrary/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/asaplibrary/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg_3JJ94RpsCRWHnDOLv-qHGGUnkA" title="http://code.google.com/p/asaplibrary/"&gt;http://code.google.com/p/asaplibrary/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://asaplibrary.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhMT34Yo4TLxDIiijL0Fxr4wkjadw" title="http://asaplibrary.org/"&gt;http://asaplibrary.org/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://asaplibrary.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhMT34Yo4TLxDIiijL0Fxr4wkjadw" title="http://asaplibrary.org/"&gt;http://asaplibrary.org/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://asapframework.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgG0yYsviUagVr-i1SXqPqAn_BqPw" title="http://asapframework.org"&gt;http://asapframework.org&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://asapframework.org/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgG0yYsviUagVr-i1SXqPqAn_BqPw" title="http://asapframework.org"&gt;http://asapframework.org&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;27、 &lt;strong&gt;as3mathlib&lt;/strong&gt;开 源Flex/Actionscript数学库&lt;/span&gt; &lt;strong&gt;27,&lt;/strong&gt; as3mathlib open source Flex / Actionscript Math Library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3mathlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiWWx8sU-nK40EadrsNh5y791WBJw" title="http://code.google.com/p/as3mathlib/"&gt;http://code.google.com/p/as3mathlib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3mathlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiWWx8sU-nK40EadrsNh5y791WBJw" title="http://code.google.com/p/as3mathlib/"&gt;http://code.google.com/p/as3mathlib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;28、 &lt;strong&gt;as3corelib&lt;/strong&gt;包 含一些基础功能AS3库&lt;/span&gt; &lt;strong&gt;28,&lt;/strong&gt; as3corelib AS3 library contains some basic functions&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3corelib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg4qTXdE2_IkbP-oD0lc96Yse8WTg" title="http://code.google.com/p/as3corelib/"&gt;http://code.google.com/p/as3corelib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3corelib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhg4qTXdE2_IkbP-oD0lc96Yse8WTg" title="http://code.google.com/p/as3corelib/"&gt;http://code.google.com/p/as3corelib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;29、 &lt;strong&gt;minimalcomps&lt;/strong&gt;一 组AS3 UI组件&lt;/span&gt; &lt;strong&gt;29,&lt;/strong&gt; minimalcomps a AS3 UI Components&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.bit-101.com/minimalcomps/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhH6Pa930ROxbGkSvJsGkoogPVrYA" title="http://www.bit-101.com/minimalcomps/"&gt;http://www.bit-101.com/minimalcomps/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.bit-101.com/minimalcomps/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhH6Pa930ROxbGkSvJsGkoogPVrYA" title="http://www.bit-101.com/minimalcomps/"&gt;http://www.bit-101.com/minimalcomps/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;30、 &lt;strong&gt;as3gif&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;30,&lt;/strong&gt; as3gif&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3gif/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgoUswPSbXDKlfjBqt5PhuAIKpXaQ" title="http://code.google.com/p/as3gif/"&gt;http://code.google.com/p/as3gif/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3gif/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhgoUswPSbXDKlfjBqt5PhuAIKpXaQ" title="http://code.google.com/p/as3gif/"&gt;http://code.google.com/p/as3gif/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;31、 &lt;strong&gt;queueloader-as3&lt;/strong&gt;一 组AS3库，用来进行资源序列载入及监测&lt;/span&gt; &lt;strong&gt;31, queueloader-as3&lt;/strong&gt; a AS3 library sequence used for loading and monitoring resources&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/queueloader-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjer3AsIeoFV5zyok9jrV-6Hakvxw" title="http://code.google.com/p/queueloader-as3/"&gt;http://code.google.com/p/queueloader-as3/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/queueloader-as3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjer3AsIeoFV5zyok9jrV-6Hakvxw" title="http://code.google.com/p/queueloader-as3/"&gt;http://code.google.com/p/queueloader-as3/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;32、 &lt;strong&gt;TweenMax&lt;/strong&gt; (AS3)&lt;/span&gt; 32, &lt;strong&gt;TweenMax&lt;/strong&gt; (AS3)&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://blog.greensock.com/tweenmaxas3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiAybkmlzAF95MqHNy2jlZDUOeafA" title="http://blog.greensock.com/tweenmaxas3/"&gt;http://blog.greensock.com/tweenmaxas3/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://blog.greensock.com/tweenmaxas3/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhiAybkmlzAF95MqHNy2jlZDUOeafA" title="http://blog.greensock.com/tweenmaxas3/"&gt;http://blog.greensock.com/tweenmaxas3/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;33、 &lt;strong&gt;Atellis Reflection Component&lt;/strong&gt;一款Flex反射效果组件&lt;/span&gt; &lt;strong&gt;33,&lt;/strong&gt; Atellis &lt;strong&gt;Reflection Component&lt;/strong&gt; effect of a reflection component Flex&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://labs.atellis.com/2007/07/11/atellis-reflection-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhQmJGA9kMSwv85mfRqI1rMmBOhEA" title="http://labs.atellis.com/2007/07/11/atellis-reflection-component/"&gt;http://labs.atellis.com/2007/07/11/atellis-reflection-component/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://labs.atellis.com/2007/07/11/atellis-reflection-component/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhQmJGA9kMSwv85mfRqI1rMmBOhEA" title="http://labs.atellis.com/2007/07/11/atellis-reflection-component/"&gt;http://labs.atellis.com/2007/07/11/atellis-reflection-component/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;34、 &lt;strong&gt;AS3Eval&lt;/strong&gt;简 单来说，就是用AS3实现的AS3编译器&lt;/span&gt; &lt;strong&gt;34,&lt;/strong&gt; AS3Eval simply put, is realized with AS3 AS3 compiler&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://eval.hurlant.com/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh_lU6yTRC8N7YBStsqtk1nwKA7nw" title="http://eval.hurlant.com/"&gt;http://eval.hurlant.com/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://eval.hurlant.com/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhh_lU6yTRC8N7YBStsqtk1nwKA7nw" title="http://eval.hurlant.com/"&gt;http://eval.hurlant.com/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;35、 &lt;strong&gt;ByteArray&lt;/strong&gt;的 组件、库合集，包括liquid components、mousegesture、ASZip、GIF Player、GIF Animation Encoder、AlivePDF、Live JPEG Encoder、ScaleBitmap等&lt;/span&gt; 35, &lt;strong&gt;ByteArray&lt;/strong&gt; component, library collection, including liquid components, mousegesture, ASZip, GIF Player, GIF Animation Encoder, AlivePDF, Live JPEG Encoder, ScaleBitmap etc.&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.bytearray.org/%3Fpage_id%3D82&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhi5knQPtrkDADEQGbJvfCe9xiWrTw" title="http://www.bytearray.org/?page_id=82"&gt;http://www.bytearray.org/?page_id=82&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.bytearray.org/%3Fpage_id%3D82&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhi5knQPtrkDADEQGbJvfCe9xiWrTw" title="http://www.bytearray.org/?page_id=82"&gt;http://www.bytearray.org/?page_id=82&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;36、 &lt;strong&gt;AS3C&lt;/strong&gt;针 对AVM2虚拟机，用C#写的字节码编译器&lt;/span&gt; &lt;strong&gt;36,&lt;/strong&gt; AS3C for AVM2 virtual machine, using C # to write the byte-code compiler&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3c/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhgdd6hmlCozRAI3pl0Bn7PjW4mdg" title="http://code.google.com/p/as3c/"&gt;http://code.google.com/p/as3c/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3c/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhgdd6hmlCozRAI3pl0Bn7PjW4mdg" title="http://code.google.com/p/as3c/"&gt;http://code.google.com/p/as3c/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;37、 &lt;strong&gt;as3httpclientlib&lt;/strong&gt; as3实现的http客户端&lt;/span&gt; &lt;strong&gt;37,&lt;/strong&gt; as3httpclientlib as3 http client implementation&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3httpclientlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhDX1UQCcrwvEjDESyC_M-6QbZTlA" title="http://code.google.com/p/as3httpclientlib/"&gt;http://code.google.com/p/as3httpclientlib/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3httpclientlib/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhhDX1UQCcrwvEjDESyC_M-6QbZTlA" title="http://code.google.com/p/as3httpclientlib/"&gt;http://code.google.com/p/as3httpclientlib/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;38、 &lt;strong&gt;as3ui&lt;/strong&gt;一 组常规的as3 ui界面库&lt;/span&gt; &lt;strong&gt;38,&lt;/strong&gt; as3ui a conventional as3 ui interface library&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ui/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjCTQiAtdsZdTfsu-fS5LVnaoni9w" title="http://code.google.com/p/as3ui/"&gt;http://code.google.com/p/as3ui/&lt;/a&gt;&lt;/span&gt; &lt;a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://code.google.com/p/as3ui/&amp;amp;rurl=translate.google.co.uk&amp;amp;twu=1&amp;amp;usg=ALkJrhjCTQiAtdsZdTfsu-fS5LVnaoni9w" title="http://code.google.com/p/as3ui/"&gt;http://code.google.com/p/as3ui/&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;39&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/flash-flex-links-and-resources-courtesy-of-je"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-6286533972105968229?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/6286533972105968229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=6286533972105968229' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6286533972105968229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6286533972105968229'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/flash-flex-links-and-resources-courtesy.html' title='flash flex links and resources courtesy of jexchen hence some chinese characters!'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-4449643905870208805</id><published>2010-04-08T09:04:00.001-07:00</published><updated>2010-04-08T09:04:57.538-07:00</updated><title type='text'>Using registerClassAlias</title><content type='html'>&lt;div class='posterous_autopost'&gt;      &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial;"&gt;NOTE: registerClassAlias should be called before any instances of the class you are aliasing is instantiated!!!!!&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;The contents of this message and any attachments to it are confidential and may be legally privileged. If you have received this message in error you should delete it from your system immediately and advise the sender. dunnhumby may monitor and record all emails. The views expressed in this email are those of the sender and not those of dunnhumby.&lt;/pre&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/using-registerclassalias"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-4449643905870208805?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/4449643905870208805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=4449643905870208805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4449643905870208805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4449643905870208805'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/using-registerclassalias.html' title='Using registerClassAlias'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-142321449506028808</id><published>2010-04-07T04:57:00.001-07:00</published><updated>2010-04-07T04:57:42.719-07:00</updated><title type='text'>Registering a remoteclass alias dynamically</title><content type='html'>&lt;div class='posterous_autopost'&gt;Say you&amp;#39;ve got a value object (VO) and you have defined a remote class alias on it. You can change(add?) another alias dynamically at runtime.&lt;br /&gt;When you perform the execution of a service call.&lt;p /&gt;eg [RemoteClass(alias=&amp;quot;lf.Project.Service.ServiceProxy.ObjectivesServiceProxy.StoreCluster&amp;quot;)] on the class &lt;p /&gt; com.fasanya.application.vo.StoreClusterVO.&lt;p /&gt;To change this at runtime particularly useful if the same VO is used by different services you can do this...&lt;p /&gt;public function execute(event:CairngormEvent):void  //often done in this method of a command&lt;br /&gt; {&lt;p /&gt;   var clientClassName:String = &amp;#39;com.fasanya.application.vo.StoreClusterVO&amp;#39;;&lt;p /&gt;   var clientClass:Class = getDefinitionByName(clientClassName) as Class;&lt;p /&gt;   var newAlias:String = &amp;#39;&amp;#39;lf.Project.NewService.NewServiceProxy.NewServiceProxyName.StoreCluster&amp;quot;;&lt;p /&gt;    registerClassAlias(newAlias, clientClass);&lt;p /&gt;  ...other code...&lt;p /&gt;  delegate.serviceRequest(clientClass);&lt;br /&gt;} &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/registering-a-remoteclass-alias-dynamically"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-142321449506028808?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/142321449506028808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=142321449506028808' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/142321449506028808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/142321449506028808'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/registering-remoteclass-alias.html' title='Registering a remoteclass alias dynamically'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-6480399700070209561</id><published>2010-04-06T11:46:00.001-07:00</published><updated>2010-04-06T11:46:00.765-07:00</updated><title type='text'>Emergent Design - These few simple rules, applied locally, can help a high quality global design to emerge.</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;div class="posterous_bookmarklet_entry"&gt; &lt;blockquote class="posterous_long_quote"&gt;&lt;p&gt;In a posting on the Agile Modeling mailing list, Alan Shalloway of &lt;a href="http://www.netobjectives.com/"&gt;Net Objectives&lt;/a&gt;, proposed some  rules on well designed code:&lt;/p&gt;  &lt;ol&gt;  &lt;li&gt;Runs all the tests&lt;/li&gt;  &lt;li&gt;Follows once and only once rule&lt;br /&gt;  (which I believe means “contains no duplicate code”)&lt;/li&gt;  &lt;li&gt;Has high cohesion (clarity)&lt;/li&gt;  &lt;li&gt;Has loose coupling&lt;/li&gt;  &lt;/ol&gt;  &lt;p&gt;Alan comments:&lt;/p&gt;  &lt;blockquote class="posterous_medium_quote"&gt;&lt;p&gt;“If you look at design patterns, you can see that most of them follow  		these rules.  High cohesion and loose coupling can often be achieved by  		decomposing your problem domain with the distinctions of commonality /  		variability analysis.    That is, find how things are similar and then  		find out how they are different.&lt;/p&gt;  &lt;p&gt;“The other thing I like about this set of rules is that they are easy to  		teach and understand.  Cohesion has to do with clarity.  Method cohesion  		means a method is focused on one purpose.  Class cohesion means all of  		the methods in a class are focused on one larger purpose.”&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div class="posterous_quote_citation"&gt;via &lt;a href="http://xprogramming.com/classics/expemergentdesign/"&gt;xprogramming.com&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt;&lt;/div&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/emergent-design-these-few-simple-rules-applie"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-6480399700070209561?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/6480399700070209561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=6480399700070209561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6480399700070209561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6480399700070209561'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/emergent-design-these-few-simple-rules.html' title='Emergent Design - These few simple rules, applied locally, can help a high quality global design to emerge.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7860325528733449677</id><published>2010-04-01T09:28:00.001-07:00</published><updated>2010-04-01T09:28:17.832-07:00</updated><title type='text'>Flex Comp Startup courtesy of JexChen</title><content type='html'>&lt;div class='posterous_autopost'&gt;       &lt;div style='padding: 5px 5px 10px 5px; margin-top: 5px; border: 1px solid #ddd; background-color: #fff;line-height: 16px;'&gt;       &lt;div style="float: left; margin-right: 5px; overflow: visible;"&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/0v8epJ57GdhCx8FL14v9CtwyD9nmqxWij9Iz85TmGT69hldirpL638AAoePi/flexcustomcomponentlifecyclepr.ppt' style='color: #bc7134;'&gt;&lt;img src='http://posterous.com/images/filetypes/ppt.png' style='border: none;'/&gt;&lt;/a&gt;&lt;/div&gt;       &lt;div style="font-size: 10px; color: #424037;line-height: 16px;"&gt;Download now or &lt;a href='http://fasanya.posterous.com/flex-comp-startup-courtesy-of-jexchen' style='color: #bc7134;'&gt;preview on posterous&lt;/a&gt;&lt;/div&gt;       &lt;b&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/0v8epJ57GdhCx8FL14v9CtwyD9nmqxWij9Iz85TmGT69hldirpL638AAoePi/flexcustomcomponentlifecyclepr.ppt' style='color: #bc7134;'&gt;flexcustomcomponentlifecyclepractice-090506052019-phpapp01.ppt&lt;/a&gt;&lt;/b&gt; &lt;span style="font-size: 10px; color: #424037;"&gt;(557 KB)&lt;/span&gt;       &lt;br style="clear: both;"/&gt;&lt;/div&gt;       &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/flex-comp-startup-courtesy-of-jexchen"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7860325528733449677?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7860325528733449677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7860325528733449677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7860325528733449677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7860325528733449677'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/flex-comp-startup-courtesy-of-jexchen.html' title='Flex Comp Startup courtesy of JexChen'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-1745057923081325987</id><published>2010-04-01T09:16:00.001-07:00</published><updated>2010-04-01T09:16:29.144-07:00</updated><title type='text'>Flex Comp lifecycle diagram courtesy of Jex Chen @ http://www.jexchen.com/</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/FHVss9dMZf4iEmlRL8zstR9SAW1tINmR3y1s6w4IBCC81LZVmqZeVxtLoLKO/lifecycle2.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/fasanya/65LBBCKnGFuw63yuCtsZpaP7cpbf51blFkTkCTZgzGQqxbs7jexjdbKgd1Da/lifecycle2.jpg.scaled.500.jpg" width="500" height="367"/&gt;&lt;/a&gt;  &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/flex-comp-lifecycle-diagram-courtesy-of-jex-c"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-1745057923081325987?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/1745057923081325987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=1745057923081325987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1745057923081325987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1745057923081325987'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/04/flex-comp-lifecycle-diagram-courtesy-of.html' title='Flex Comp lifecycle diagram courtesy of Jex Chen @ http://www.jexchen.com/'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-4563422306677428658</id><published>2010-03-31T08:19:00.001-07:00</published><updated>2010-03-31T08:19:08.666-07:00</updated><title type='text'>Transforming the Mind - Telic and Paratelic States</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;div class="posterous_bookmarklet_entry"&gt; &lt;blockquote class="posterous_long_quote"&gt;&lt;center&gt;&lt;h1&gt;Telic and Paratelic States&lt;/h1&gt;&lt;/center&gt;  &lt;center&gt;&lt;img src="http://www.trans4mind.com/transformation/transform4.2.htm/line.gif" height="3" /&gt;&lt;/center&gt;&lt;br /&gt;  &lt;p&gt;The term 'state' in psychology is used to describe something about a person at a given moment in time. States can change quickly, can last for various durations of time (from seconds to days) and can be affected by environmental cues, interpersonal transactions, cognitive processes, biological changes and motivation. There are thousands of adjectives that may be used to characterize a person's current operative state, such as 'angry', 'fearful', 'bored', 'serious', 'excited', 'sensation-seeking' and many others. This is clearly impractical as a basis for the understanding of psychological processes; a better solution is to look for clusters of inter-related states or behaviors that are amenable either to direct observation or psychometric measurement. Such a model would need to explain why individuals do not remain in one constant state of arousal, but introvert or extravert, withdraw or become involved, be thoughtful or spontaneous.&lt;/p&gt;  &lt;p&gt;Take the example of a person riding a bicycle: the behavior is cycling, the goal is arriving at a certain place. If the cyclist needs to get to work on time, his behavior is chosen to meet the goal (arrival) that is in the foreground; the means of doing this is secondary. This is a &lt;b&gt;telic state&lt;/b&gt; - the person is serious-minded, planning oriented and seeks to avoid arousal.&lt;/p&gt;  &lt;p&gt;The alternative experience is for the behavior to be in the foreground and the goal in the background - the person may simply like the feeling of the wind in his hair as he cycles down a hill; where he is going is secondary. This is a &lt;b&gt;paratelic state&lt;/b&gt; - the person is playful, prefers to be spontaneous, is 'here and now' oriented (pursues goals only insofar as they add to the immediate pleasure of the situation) and prefers arousal to be high, since it is pleasurable.&lt;/p&gt;  &lt;p&gt;A certain behavior (cycling) may then be associated with contrasting motivational states (ends: goal achievement versus means: behavioral satisfaction), and the cyclist may switch between these states on different occasions or even several times during one cycle ride. This helps to explain why individuals do not seek to remain at a 'safe' medium level of arousal all the time, but engage in exploration, curiosity, risk-taking, play, art, religion and humor, sometimes because they lead to the achievement of a goal and sometimes because they are pleasurable in themselves. Neurosis or distorted thinking will however reduce this range and flexibility of experience due to fears of consequences.&lt;/p&gt;  &lt;p&gt;Contingent events, i.e. genuine setbacks, may trigger a reversal from a paratelic state of pleasurable excitement to a telic state of unpleasant arousal or anxiety; or the reverse may occur if things suddenly go well. Frustration in which the needs of the person are not being satisfied may cause such a reversal, and a person may become satiated with one mode and increasingly sensitive to cues that may trigger a reversal.&lt;/p&gt;  &lt;p&gt;The distinction between telic and paratelic states relates to many features of the experience of motivation:&lt;/p&gt;  &lt;center&gt;&lt;table border="1"&gt;  &lt;tr align="CENTER" valign="MIDDLE"&gt;  &lt;td align="left"&gt;&lt;b&gt;&lt;i&gt;Motivations&lt;/i&gt;&lt;/b&gt;&lt;/td&gt; &lt;td align="left"&gt;&lt;b&gt;TELIC&lt;/b&gt;&lt;/td&gt; &lt;td align="left"&gt;&lt;b&gt;PARATELIC&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr align="CENTER" valign="MIDDLE"&gt;  &lt;td&gt;&lt;b&gt;Means-Ends motivation:&lt;/b&gt;&lt;/td&gt; &lt;td align="left"&gt;Essential goals&lt;p&gt;Imposed goals&lt;/p&gt;&lt;p&gt;Unavoidable goals&lt;/p&gt;&lt;p&gt;Reactive&lt;/p&gt;&lt;p&gt;Goal-oriented&lt;/p&gt;&lt;p&gt;End-oriented&lt;/p&gt;&lt;/td&gt;  &lt;td align="left"&gt;Not essential goals&lt;p&gt;Freely chosen goals&lt;/p&gt;&lt;p&gt;Avoidable goals&lt;/p&gt;&lt;p&gt;Proactive&lt;/p&gt;&lt;p&gt;behavior oriented&lt;/p&gt;&lt;p&gt;Process-oriented&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr align="CENTER" valign="MIDDLE"&gt;  &lt;td&gt;&lt;b&gt;Time motivations:&lt;/b&gt;&lt;/td&gt;  &lt;td align="left"&gt;Wish to complete&lt;p&gt;Future-oriented&lt;/p&gt;&lt;p&gt;Planned&lt;/p&gt;&lt;p&gt;Pleasure of anticipation&lt;/p&gt;&lt;/td&gt;  &lt;td align="left"&gt;Wish to prolong&lt;p&gt;Present-oriented&lt;/p&gt;&lt;p&gt;Spontaneous&lt;/p&gt;&lt;p&gt;Pleasure of sensation&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr align="CENTER" valign="MIDDLE"&gt;  &lt;td&gt;&lt;b&gt;Intensity motivations:&lt;/b&gt;&lt;/td&gt; &lt;td align="left"&gt;High rationality preferred&lt;p&gt;Low arousal preferred&lt;/p&gt;&lt;/td&gt;  &lt;td align="left"&gt;Low rationality preferred&lt;p&gt;High arousal preferred&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;/table&gt;&lt;/center&gt;  &lt;p&gt;The psychological variables most central to the distinction between telic and paratelic states in respect of intensity, are felt arousal (the degree to which a person feels 'stirred up' or aroused) and hedonic tone (the degree of pleasure experienced). The following diagram illustrates this relationship:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src="http://www.trans4mind.com/transformation/feltarousal.gif" height="221" width="361" /&gt;&lt;/center&gt;  &lt;p&gt;High felt arousal may be experienced as unpleasant in the telic mode (anxiety) or pleasant in the paratelic (excitement). A climber may enjoy his climb and feel really excited at being near the summit and then remembering a sudden fall under similar circumstances, experience a panic-attack. Similarly a low felt arousal may reverse from pleasant relaxation (in the telic mode) to unpleasant boredom (in the paratelic), when the person has become satiated with that way of operating, and finds present circumstances inadequately stimulating. So a circumstance becomes stressful when it forces the person into a mode of operation that he would prefer not to be in. &lt;/p&gt;  &lt;p&gt;An event or situation (such as a bank raid or an examination) that is associated with an increase in arousal (i.e. one that would typically be perceived as a 'stressful' event) is likely to be experienced as stressful only when one is in the telic state, and may be viewed as an exciting challenge in the paratelic state. Radically different responses to the same situation, in terms of affect, behavior and cognitions would be expected for individuals in these different states of mind. The one would involve anxiety, avoidance, resistance and a variety of defensive 'coping' strategies, while the other would be characterized by excitement, exhilaration, 'approach' strategies and a sense of challenge.&lt;/p&gt;  &lt;div class="block"&gt;  “A circumstance becomes stressful when it forces the person into a mode of operation that he would prefer not to be in.”&lt;/div&gt;  Thus paratelic dominant individuals have a higher threshold for high-arousal stress; on the other hand they are more susceptible to stress that results from under-stimulation, and may find boring, monotonous activities very stressful. These factors will be examined in greater depth later on.&lt;/blockquote&gt;    &lt;div class="posterous_quote_citation"&gt;via &lt;a href="http://www.trans4mind.com/transformation/transform4.2.htm"&gt;trans4mind.com&lt;/a&gt;&lt;/div&gt; &lt;p&gt;What state are you in when programming.&lt;/p&gt;&lt;/div&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/transforming-the-mind-telic-and-paratelic-sta"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-4563422306677428658?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/4563422306677428658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=4563422306677428658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4563422306677428658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4563422306677428658'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/transforming-mind-telic-and-paratelic.html' title='Transforming the Mind - Telic and Paratelic States'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7217461593267084596</id><published>2010-03-31T01:56:00.001-07:00</published><updated>2010-03-31T01:56:21.249-07:00</updated><title type='text'>Component LifeCycle courtesy of Shrikant Patil at http://flexscript.wordpress.com/2008/10/24/flex-component-lifecycle-and-flex-component-framework/</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;p&gt;Flex is component based framework. It has many components like button, datagrid, containers etc. There are times when we want to write our own component when any of standard Flex components doesn’t meet our application needs. There are two ways to achieve this, either create the required custom component by extending exiting Flex standard components else create a component according to our requirements from scratch (completely new component).&lt;br /&gt; &lt;span&gt;&lt;/span&gt;To create a custom component using either of any way, we must have knowledge of component Life cycle,&lt;br /&gt; All standard Flex components goes internally under a life cycle, form its creation to deletion. The life cycle of Flex Components divided into three phases, and phases divided into many stages.&lt;br /&gt; 1) &lt;strong&gt;Initialization Phase&lt;/strong&gt;&lt;br /&gt; 2) &lt;strong&gt;Update Phase&lt;/strong&gt;&lt;br /&gt; 3) &lt;strong&gt;Destruction Phase&lt;/strong&gt;&lt;br /&gt; &lt;a href="http://flexscript.files.wordpress.com/2008/10/clc-1.jpg"&gt;&lt;img title="clc-1" class="aligncenter size-full wp-image-173" src="http://flexscript.files.wordpress.com/2008/10/clc-1.jpg?w=162&amp;amp;h=149" height="149" alt="" width="162" /&gt;&lt;/a&gt;Let us dig more each phases of flex component life cycle;&lt;br /&gt; &lt;strong&gt;1) Initialization Phase: &lt;/strong&gt;This is first phase of flex components life cycle; it contains three stages;&lt;br /&gt; - &lt;strong&gt;Construction Stage&lt;/strong&gt;&lt;br /&gt; - &lt;strong&gt;Configuration Stage&lt;/strong&gt;&lt;br /&gt; - &lt;strong&gt;Attachment Stage&lt;/strong&gt;&lt;br /&gt; - &lt;strong&gt;Initialization Stage.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="clc-2" class="aligncenter size-full wp-image-174" src="http://flexscript.files.wordpress.com/2008/10/clc-2.jpg?w=337&amp;amp;h=158" height="158" alt="" width="337" /&gt;&lt;/p&gt; &lt;p&gt;We will look into the each stages of this Phase:&lt;br /&gt; &lt;strong&gt;&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;a) Construction Stage (Initialization Phase):&lt;/strong&gt;&lt;br /&gt; In this stage of initialization Phase, the constructor of the component is called by component tag in MXML or using &lt;em&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/em&gt; operator using ActionScript. This is very first stage from where components life cycle begins. Constructor of the component calls the &lt;strong&gt;super ()&lt;/strong&gt; to invoke the super class constructor. Commonly we create out custom component by extending the UIComponent class, as it is base class for all display components of flex framework. This stage defines the structure of the constructor of our component. We should not create any display objects in constructor, for that purpose we use different stage. We can use this stage to;&lt;br /&gt; 1)  Set some of initial values for the component properties.&lt;br /&gt; 2)  To add event listeners to the component.&lt;br /&gt; 3)  And initialize the other objects.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;b) Configuration Stage (Initialization Phase): &lt;/strong&gt;&lt;br /&gt; This stage occur only once in component life cycle. During this step the values assigned for properties of the component using setters are set internally to refer them later in configuration of component.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;c) Attachment Stage (Initialization Phase):&lt;/strong&gt;&lt;br /&gt; This stage of Initialization Phase gets triggered when component is added to the display list using either &lt;em&gt;&lt;strong&gt;addChild(), addChildAt()&lt;/strong&gt;&lt;/em&gt; Or component created in MXML tags. In this stage the components parent is defined because the component is now added to the display list. When this component is added to display list it calls &lt;em&gt;&lt;strong&gt;initialize ()&lt;/strong&gt;&lt;/em&gt; method to initiate the next stage of this phase, i.e. Initialization Stage.&lt;br /&gt; &lt;strong&gt;&lt;br /&gt; d) Initialization Stage (Initialization Phase):&lt;/strong&gt;&lt;br /&gt; After component is attached (Attachment Stage) to the display list, initialization Stage starts. This is important Stage of the component life cycle. This is responsible to create children objects of the component, sizing and placing the component and its children, and applying the property, style values to the component. During this stage following steps occurs;&lt;br /&gt; &lt;strong&gt;Step1&lt;/strong&gt;: Dispatch &lt;em&gt;&lt;strong&gt;preinitialize event&lt;/strong&gt;&lt;/em&gt;.&lt;br /&gt; &lt;strong&gt;Step2&lt;/strong&gt;: Calls &lt;em&gt;&lt;strong&gt;createChildren()&lt;/strong&gt;&lt;/em&gt; method to create children of the component.&lt;br /&gt; &lt;strong&gt;Step3&lt;/strong&gt;: Dispatch &lt;em&gt;&lt;strong&gt;Initialize&lt;/strong&gt;&lt;/em&gt; event&lt;br /&gt; &lt;strong&gt;Step4&lt;/strong&gt;: &lt;em&gt;&lt;strong&gt;Invalidation&lt;/strong&gt;&lt;/em&gt;: Marks the component for Invalidation which results the component to go with methods &lt;em&gt;&lt;strong&gt;invalidateProperties(), invalidateSize() &lt;/strong&gt;&lt;/em&gt;and&lt;em&gt;&lt;strong&gt; invalidateDisplayList()&lt;/strong&gt;&lt;/em&gt;. (We see more about Invalidation after some lines)&lt;br /&gt; &lt;strong&gt;Step5&lt;/strong&gt;: &lt;em&gt;&lt;strong&gt;Validation&lt;/strong&gt;&lt;/em&gt;: Invalidation of last step results to validation methods like &lt;em&gt;&lt;strong&gt;commitProperties(), measure() &lt;/strong&gt;&lt;/em&gt;and &lt;em&gt;&lt;strong&gt;updateDisplayLiIst()&lt;/strong&gt;&lt;/em&gt;.(we see more about Validation after some lines)&lt;br /&gt; &lt;strong&gt;Step6&lt;/strong&gt;: Dispatch &lt;em&gt;&lt;strong&gt;creationComplete &lt;/strong&gt;&lt;/em&gt;event.&lt;/p&gt; &lt;p&gt;We must understand createChildren(), Invalidation and Validation to implement the above steps in custom component development.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;CreateChildren() : &lt;/strong&gt;This method is called by the flex during the Initialization Stage. This method is used to create and attach the sub objects (Child Components) of the component at the initial stage of the component life cycle. The child components might be any of UIComponent or any type of native display object. For example you may want to add three buttons at the top right corner for the TitleWindow component to provide maximize, minimize and close functionality to your custom component. The three buttons are created and added at top right corner of the TitleWindow in createChildren() method. The createChildren() method is called only once during the component life cycle, so this is ideal place to add our child objects to the component. The first statement of the createChildren() method is ; &lt;strong&gt;super.createChildren();&lt;/strong&gt;&lt;br /&gt; So that the super class create its sub objects. Later we can create required sub components and initialize them and add them to the components display list.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Invalidation: &lt;/strong&gt;&lt;br /&gt; Changes made to the component’s properties, styles, sub components from either user or by framework are noted and the component is marked to update (render) those changes on component. The process of marking the component to update (render) according to the changes done either by user or by framework is known as Invalidation. During the invalidation the values which were noted as changed are actually rendered (Not all values).&lt;br /&gt; Invalidation can occur at two places of components life cycle, &lt;em&gt;Initialization Phase&lt;/em&gt; and  &lt;em&gt;Update Phase&lt;/em&gt;.&lt;br /&gt; In Initialization Phase, all values are not yet assigned for rendering, so the Invalidation marks whole component for Validation. In Update Phase, only changed values are marked for validation.&lt;br /&gt; Invalidation includes the following methods to invalidate the component;&lt;br /&gt; &lt;em&gt;&lt;strong&gt;invalidateProperties()&lt;/strong&gt;&lt;/em&gt; – This method is used to mark changed properties of the component for validation (render).&lt;br /&gt; &lt;em&gt;&lt;strong&gt;InvalidateSize()&lt;/strong&gt;&lt;/em&gt; – This  method is used to mark the component for resizing according to the value changed. Suppose say that width property of a component changed, and then the component is marked for validation using this method.&lt;br /&gt; &lt;em&gt;&lt;strong&gt;invalidateDisplayList()&lt;/strong&gt;&lt;/em&gt; – This method is used to mark the component for validation (render), when any visual related changes occur in component.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Validation: &lt;/strong&gt;&lt;br /&gt; Validation is like response for invalidation. When component marks value (Invalidation) then the related method is called and requested changes are rendered on the component. The process of rendering or processing the invalidated values on component is known as Validation. The validation also includes three methods relative to the Invalidation methods.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;commitProperties() &lt;/strong&gt;&lt;/em&gt;– This method is used for commit the property values which are marked by Invalidation. When any property of the component changed component is marked for validation, and this method is called to update that property value to the component. This method is called as a result of invalidation’s &lt;em&gt;&lt;strong&gt;invalidateProperty()&lt;/strong&gt;&lt;/em&gt; method. Means the property value which was marked for update at invalidation is updated on the component in this method. The first statement of this method is &lt;em&gt;&lt;strong&gt;super.commitProperties();&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Measure ():&lt;/strong&gt;&lt;/em&gt; This method is used to perform the measurement calculation and provide the measurement information to the framework, so that framework uses these measurement details to layout this component on its container. Measure() method requires that we set the values of the &lt;em&gt;measuredWidth, measuredHeight&lt;/em&gt; and &lt;em&gt;measnuredMinWidth&lt;/em&gt;(optional) and &lt;em&gt;measuredMinHeight&lt;/em&gt;(optional) properties. The first code line of the method must be &lt;em&gt;&lt;strong&gt;super.measure()&lt;/strong&gt;&lt;/em&gt;. While setting the component default size and assigning sizing calculations to the framework, we need to consider all sub component’s sizes within our component.  To get the height and width of the children components use getExplicitOrMeasuredWidth() and getExplicitOrMeasuredHeight() methods.&lt;/p&gt; &lt;p&gt;&lt;em&gt;measuredWidth &amp;amp; measuredHeight &lt;/em&gt;– default value’s of the component for width and width. We can set these values during measure () method to set the component required default height and width.&lt;/p&gt; &lt;p&gt;&lt;em&gt;measuredMinWidth &amp;amp; measuredMinHeight &lt;/em&gt;– Minimum value’s of the component for height and width. Commonly we set these value as same as measuredHeight and measuredWidth values.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;updateDisplayList () – &lt;/strong&gt;&lt;br /&gt; This method is end point of the validation process. This method is called as a result of invalidateDisplayList() mentioned in Invalidation process. This method performs laying out the components contents and does any visual updates by rendering on components. The first line of code we need to write within this component is &lt;em&gt;&lt;strong&gt;super.updateDisplayList()&lt;/strong&gt;&lt;/em&gt;. This method receives two parameters: &lt;em&gt;unscaledWidth &lt;/em&gt;and &lt;em&gt;unscaledHeight&lt;/em&gt;. These parameters contains the height and width which were set at measure () method.&lt;/p&gt; &lt;p&gt;Validation and invalidation are relative stages.&lt;br /&gt; The invalidateProperties() method of Invalidation calls commitProperties() method of Validation.&lt;br /&gt; The invalidateSize() method of Invalidation calls measure() method of Validation.&lt;br /&gt; The invalidateDisplayList() method of Invalidation calls updateDisplayList() of the Validation.&lt;/p&gt; &lt;p&gt;&lt;a href="http://flexscript.files.wordpress.com/2008/10/clc-3.jpg"&gt;&lt;img title="clc-3" class="aligncenter size-full wp-image-175" src="http://flexscript.files.wordpress.com/2008/10/clc-3.jpg?w=373&amp;amp;h=130" height="130" alt="" width="373" /&gt;&lt;/a&gt;Keep the invalidation and validation steps in mind, because the same steps occur at the phase of update. After completing Validation the last step of initialize stage is to dispatch the creationComplete event. Overall of the initialization Stage we can see below;&lt;br /&gt; &lt;a href="http://flexscript.files.wordpress.com/2008/10/clc-4.jpg"&gt;&lt;img title="clc-4" class="aligncenter size-full wp-image-176" src="http://flexscript.files.wordpress.com/2008/10/clc-4.jpg?w=373&amp;amp;h=208" height="208" alt="" width="373" /&gt;&lt;/a&gt;&lt;strong&gt;2) Update Phase: &lt;/strong&gt;&lt;br /&gt; This phase of component life cycle is related to the updating the components internal values and rendering them on component. The updating depends on user interaction or framework processes which change the values of the component to update. The process of update includes waiting to changes happen and note each change and mark it as invalidate (Invalidation) using any of invalidation methods. After invalidation the component goes related validation method to update or render the changed values on component. After validation the component again resides waiting (update state).&lt;br /&gt; &lt;a href="http://flexscript.files.wordpress.com/2008/10/clc-5.jpg"&gt;&lt;img title="clc-5" class="aligncenter size-full wp-image-177" src="http://flexscript.files.wordpress.com/2008/10/clc-5.jpg?w=414&amp;amp;h=99" height="99" alt="" width="414" /&gt;&lt;/a&gt;&lt;strong&gt;3) Destruction Phase:&lt;/strong&gt;&lt;br /&gt; This is final Phase of component life cycle. This phase occurs when component is removed from the display list. It will get removed form any other references and soon it will get garbage collected, so that it will get completely removed by the memory and free the memory.&lt;/p&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/component-lifecycle-courtesy-of-shrikant-pati"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7217461593267084596?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7217461593267084596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7217461593267084596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7217461593267084596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7217461593267084596'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/component-lifecycle-courtesy-of.html' title='Component LifeCycle courtesy of Shrikant Patil at http://flexscript.wordpress.com/2008/10/24/flex-component-lifecycle-and-flex-component-framework/'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8925215020087733682</id><published>2010-03-25T16:52:00.001-07:00</published><updated>2010-03-25T16:52:22.845-07:00</updated><title type='text'>Flex 4 Component Development</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px" id="__ss_3415542"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/michael.labriola/flex-4-component-development" title="Flex 4 Component Development"&gt;Flex 4 Component Development&lt;/a&gt;&lt;/strong&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flex4componentdevelopment-100312173914-phpapp01&amp;stripped_title=flex-4-component-development" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flex4componentdevelopment-100312173914-phpapp01&amp;stripped_title=flex-4-component-development" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/michael.labriola"&gt;michael.labriola&lt;/a&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/6060689703404909182-8925215020087733682?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8925215020087733682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8925215020087733682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8925215020087733682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8925215020087733682'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/flex-4-component-development.html' title='Flex 4 Component Development'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7849688824299338939</id><published>2010-03-25T16:51:00.001-07:00</published><updated>2010-03-25T16:51:53.450-07:00</updated><title type='text'>Adobe Flex 3 Component Life Cycle by RJOwen</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px" id="__ss_1256782"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/rjowen/component-life-cycle" title="Adobe Flex 3 Component Life Cycle"&gt;Adobe Flex 3 Component Life Cycle&lt;/a&gt;&lt;/strong&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=componentlifecycle-090406182303-phpapp02&amp;stripped_title=component-life-cycle" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=componentlifecycle-090406182303-phpapp02&amp;stripped_title=component-life-cycle" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rjowen"&gt;rjowen&lt;/a&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/6060689703404909182-7849688824299338939?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7849688824299338939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7849688824299338939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7849688824299338939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7849688824299338939'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/adobe-flex-3-component-life-cycle-by.html' title='Adobe Flex 3 Component Life Cycle by RJOwen'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8246158645372712724</id><published>2010-03-25T10:50:00.001-07:00</published><updated>2010-03-25T10:50:44.435-07:00</updated><title type='text'>Component Class Hierarchy courtesy of flexcomps.files.wordpress.com</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/wuHFDGCjHnvykoqGcoAfAeAvgsvsomoCheivCzlvFnpycArywDwqngmbjror/media_httpflexcompsfi_nqxyq.jpg.scaled1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/fasanya/wuHFDGCjHnvykoqGcoAfAeAvgsvsomoCheivCzlvFnpycArywDwqngmbjror/media_httpflexcompsfi_nqxyq.jpg.scaled500.jpg" width="500" height="631"/&gt;&lt;/a&gt;  &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/component-class-hierarchy-courtesy-of-flexcom"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-8246158645372712724?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8246158645372712724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8246158645372712724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8246158645372712724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8246158645372712724'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/component-class-hierarchy-courtesy-of.html' title='Component Class Hierarchy courtesy of flexcomps.files.wordpress.com'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-5607067070196931117</id><published>2010-03-24T09:56:00.000-07:00</published><updated>2010-03-24T09:59:05.743-07:00</updated><title type='text'>Unit Testing Flex – Mocking « compactcode A Great Framework For Flex Mocking Called MOCKITO</title><content type='html'>26&lt;br /&gt;    Aug/091&lt;br /&gt;    Unit Testing Flex – Mocking&lt;br /&gt;&lt;br /&gt;    If you have experimented with unit testing either recently or in the past you will be aware that sometimes it can get difficult. There are many challenges you might encounter including the following:&lt;br /&gt;&lt;br /&gt;        * You need to ensure something happened, without going into detail.&lt;br /&gt;        * You have to do too much to write a single test.&lt;br /&gt;        * You need to test something that you don't have control over.&lt;br /&gt;&lt;br /&gt;    In this post I want to show some ways to get around these common unit testing roadblocks using a concept called mock objects. Basically a mock object is just an object that can simulate the behaviour of another object in order to make unit tests easier to write.&lt;br /&gt;&lt;br /&gt;    Imagine yourself working as a developer at an exciting new tech startup...&lt;br /&gt;&lt;br /&gt;    Your company is launching a new website tomorrow that lets users advertise and sell their cars online. Your boss turns up at your desk at 10 am in the morning, he has a rather worried look on his face. It turns out that he forgot to schedule the feature that actually allows users to publish vehicles to the site. Oops! Your boss tells you to drop everything and get this done by the end of the day because if you don't, your fired!&lt;br /&gt;&lt;br /&gt;    You look through the code and find that a service method exists that does what you want:&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleService {&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          ...&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Excellent now all we need to do is ensure we call this function from our GUI model.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleModel {&lt;br /&gt;        public var service:VehicleService;&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          service.publish(item);&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Easy, next on the list is to write a unit test so we are 100% sure that we are calling the right function. This is were things get a little tricky, we know the VehicleService works and we don't need to test it again. All we really need to do is make sure that we call the vehicle service... but after that we don't really care what happens.&lt;br /&gt;&lt;br /&gt;    You need to ensure something happened, without going into detail.&lt;br /&gt;&lt;br /&gt;    Using mockito-flex we are going to create a mock version of our service. We will then replace the real service with the mock version. Thanks to mockito-flex our mock will automatically record all invocations it receives. We can then inspect these records to verify if the publish function has been called.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      import org.mockito.MockitoTestCase;&lt;br /&gt;     &lt;br /&gt;      // MockitoTestCase extends the standard FlexUnit TestCase. &lt;br /&gt;      public class CustomerModelTest extends MockitoTestCase {&lt;br /&gt;        private var _model:VehicleModel;&lt;br /&gt;        public function CustomerModelTest() {&lt;br /&gt;          // Tell mockito which classes will need to be mocked.&lt;br /&gt;          super([VehicleService]);&lt;br /&gt;        }&lt;br /&gt;        override public function setUp(): void {&lt;br /&gt;          _model = new VehicleModel();&lt;br /&gt;          // Replace the real service with a mock version.&lt;br /&gt;          _model.service = mock(VehicleService);&lt;br /&gt;        }&lt;br /&gt;        public function testPublishDelegatesToService(): void {&lt;br /&gt;          var item:Vehicle = new Vehicle();&lt;br /&gt;     &lt;br /&gt;          // This should call the publish function of our mock service.&lt;br /&gt;          _model.publish(item);&lt;br /&gt;     &lt;br /&gt;          // Verify that the mock service received the right call.&lt;br /&gt;          verify().that(_model.service.publish(item));&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Your boss is impressed, you finished ALL that within 5 minutes! Unfortunately the victory is short lived because he just remembered something... that's right you need make sure the vehicle is valid before publishing.&lt;br /&gt;&lt;br /&gt;    You have a look through the code and find that this validation method exists on the vehicle:&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      [Bindable]&lt;br /&gt;      public class Vehicle {&lt;br /&gt;        public var make:String;&lt;br /&gt;        public var model:String;&lt;br /&gt;        public var price:Number;&lt;br /&gt;     &lt;br /&gt;        public var ownerName:String;&lt;br /&gt;        public var locationName:String;&lt;br /&gt;     &lt;br /&gt;        public function isValid(): Boolean {&lt;br /&gt;          var valid:Boolean = true;&lt;br /&gt;          valid = valid &amp;&amp; notEmpty(make);&lt;br /&gt;          valid = valid &amp;&amp; notEmpty(model);&lt;br /&gt;          valid = valid &amp;&amp; notEmpty(ownerName);&lt;br /&gt;          valid = valid &amp;&amp; notEmpty(locationName);&lt;br /&gt;          valid = valid &amp;&amp; price &gt; 0;&lt;br /&gt;          return valid;&lt;br /&gt;        }&lt;br /&gt;        private function notEmpty(value:String): Boolean {&lt;br /&gt;          return value &amp;&amp; value.length &gt; 0&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    So you change your model to take advantage of it.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleModel {&lt;br /&gt;        public var service:VehicleService;&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          if(item.isValid()) {&lt;br /&gt;            service.publish(item);&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    And then expertly update your test.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      import org.mockito.MockitoTestCase;&lt;br /&gt;     &lt;br /&gt;      public class CustomerModelTest extends MockitoTestCase {&lt;br /&gt;        private var _model:VehicleModel;&lt;br /&gt;        public function CustomerModelTest() {&lt;br /&gt;          super([VehicleService]);&lt;br /&gt;        }&lt;br /&gt;        override public function setUp(): void {&lt;br /&gt;          _model = new VehicleModel();&lt;br /&gt;          _model.service = mock(VehicleService);&lt;br /&gt;        }&lt;br /&gt;        public function testPublishDelegatesToService(): void {&lt;br /&gt;          var item:Vehicle = new Vehicle();&lt;br /&gt;          item.make = "a";&lt;br /&gt;          item.model = "b"&lt;br /&gt;          item.price = 5;&lt;br /&gt;          item.ownerName = "fred";&lt;br /&gt;          item.locationName = "australia"&lt;br /&gt;     &lt;br /&gt;          _model.publish(item);&lt;br /&gt;     &lt;br /&gt;          verify().that(_model.service.publish(item));&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    You get the job done but you feel like you had to do a lot of work to get there. You also remember that your colleague Fred is currently working on adding more conditions to the validation function. That means you will need to add even more setup to this test.&lt;br /&gt;&lt;br /&gt;    You have to do too much to write a single test.&lt;br /&gt;&lt;br /&gt;    You wish there was a way to avoid having to do all that work to make your vehicle valid. Wouldn't it be great if you could just create a mock vehicle that is always valid? Well actually... you can!&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      import org.mockito.MockitoTestCase;&lt;br /&gt;     &lt;br /&gt;      public class CustomerModelTest extends MockitoTestCase {&lt;br /&gt;        private var _model:VehicleModel;&lt;br /&gt;        private var _item:Vehicle;&lt;br /&gt;        public function CustomerModelTest() {&lt;br /&gt;          // We are mocking the vehicle as well.&lt;br /&gt;          super([VehicleService, Vehicle]);&lt;br /&gt;        }&lt;br /&gt;        override public function setUp(): void {&lt;br /&gt;          _model = new VehicleModel();&lt;br /&gt;          _model.service = mock(VehicleService);&lt;br /&gt;          // Create the mock vehicle.&lt;br /&gt;          _item = mock(Vehicle);&lt;br /&gt;        }&lt;br /&gt;        public function testPublishDelegatesToService(): void {&lt;br /&gt;          // Update the mock so the isValid() function always return true. &lt;br /&gt;          given(_item.isValid()).willReturn(true);&lt;br /&gt;     &lt;br /&gt;          _model.publish(_item);&lt;br /&gt;     &lt;br /&gt;          verify().that(_model.service.publish(_item));&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Your boss is definitely impressed now.. you just cut five lines out of that test and when Fred updates the validation function.. your test won't break!&lt;br /&gt;&lt;br /&gt;    Everything is going well as you get ready for the big release, it's 3pm and your just about to celebrate over a few drinks when your boss remembers something... You need to record the time that every vehicle was published, because you are planning on charging your users 50c for each day they have their vehicle on your website.&lt;br /&gt;&lt;br /&gt;    Amazingly it turns out this functionality is already there on the service!&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleService {&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          ...&lt;br /&gt;        }&lt;br /&gt;        public function recordPublishTime(item:Vehicle, time:Date): void {&lt;br /&gt;          ...&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    No problem, we just need to add a call to this function in our model.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleModel {&lt;br /&gt;        public var service:VehicleService;&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          if(item.isValid()) {&lt;br /&gt;            service.publish(item);&lt;br /&gt;            service.recordPublishTime(item, new Date());&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Ok so that's looking good, except how can we verify this call using mockito?&lt;br /&gt;    A first attempt might look like this:&lt;br /&gt;&lt;br /&gt;        public function testPublishRecordsPublishTimeUsingService(): void {&lt;br /&gt;          given(_item.isValid()).willReturn(true);&lt;br /&gt;     &lt;br /&gt;          _model.publish(_item);&lt;br /&gt;     &lt;br /&gt;          verify().that(_model.service.recordPublishTime(_item, new Date()));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    Unfortunately that won't work. The date we are using in our verify is not the same as the date we are creating in our model because the two dates have different millisecond values. How do we take control of the date creation process so that we can match these dates and complete the test?&lt;br /&gt;&lt;br /&gt;    You need to test something that you don't have control over.&lt;br /&gt;&lt;br /&gt;    Fortunately it's not too hard, we just need to introduce a date factory. Once we have this factory, we can then use a mock to precisely control the date creation process. This is what the factory looks like.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class TimeFactory {&lt;br /&gt;        public function currentTime(): Date {&lt;br /&gt;          return new Date();&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    We then change our model to use the factory instead of directly creating dates.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      public class VehicleModel {&lt;br /&gt;        public var service:VehicleService;&lt;br /&gt;        public var timeFactory:TimeFactory = new TimeFactory();&lt;br /&gt;        public function publish(item:Vehicle): void {&lt;br /&gt;          if(item.isValid()) {&lt;br /&gt;            service.publish(item);&lt;br /&gt;            service.recordPublishTime(item, timeFactory.currentTime());&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Now we can fairly easily mock the factory and complete the test.&lt;br /&gt;&lt;br /&gt;    package com.compact.mocking {&lt;br /&gt;      import org.mockito.MockitoTestCase;&lt;br /&gt;     &lt;br /&gt;      public class CustomerModelTest extends MockitoTestCase {&lt;br /&gt;        private var _model:VehicleModel;&lt;br /&gt;        private var _item:Vehicle;&lt;br /&gt;        public function CustomerModelTest() {&lt;br /&gt;          super([VehicleService, Vehicle, TimeFactory]);&lt;br /&gt;        }&lt;br /&gt;        override public function setUp(): void {&lt;br /&gt;          _model = new VehicleModel();&lt;br /&gt;          _model.service = mock(VehicleService);&lt;br /&gt;          _model.timeFactory = mock(TimeFactory);&lt;br /&gt;          _item = mock(Vehicle);&lt;br /&gt;        }&lt;br /&gt;        public function testPublishRecordsPublishTimeUsingService(): void {&lt;br /&gt;          var publishDate:Date = new Date();&lt;br /&gt;     &lt;br /&gt;          given(_item.isValid()).willReturn(true);&lt;br /&gt;          given(_model.timeFactory.currentTime()).willReturn(publishDate);&lt;br /&gt;     &lt;br /&gt;          _model.publish(_item);&lt;br /&gt;     &lt;br /&gt;          verify().that(_model.service.recordPublishTime(_item, publishDate));&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    Phew! You did it.&lt;br /&gt;&lt;br /&gt;    You just saved the company! You completed the feature that allows your customers to publish their vehicles onto your new website. You unit tested your code and did so in an elegant way using mock objects and the mockito-flex framework. You encountered three common problems on your journey and overcame them all. Now all you need to do is continue the good work you have been doing and try your hand writing more unit tests.&lt;br /&gt;    Filed under: flexunit, testing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-5607067070196931117?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.compactcode.com/index.php/2009/08/unit-testing-flex-mocking/#comments' title='Unit Testing Flex – Mocking « compactcode A Great Framework For Flex Mocking Called MOCKITO'/><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/5607067070196931117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=5607067070196931117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5607067070196931117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5607067070196931117'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/unit-testing-flex-mocking-compactcode_24.html' title='Unit Testing Flex – Mocking « compactcode A Great Framework For Flex Mocking Called MOCKITO'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8602217318958426101</id><published>2010-03-18T04:10:00.001-07:00</published><updated>2010-03-18T04:10:42.165-07:00</updated><title type='text'>BetterDataGrid Improved</title><content type='html'>&lt;div class='posterous_autopost'&gt;package&lt;br /&gt;{&lt;br /&gt;import flash.display.Sprite;&lt;br /&gt;import flash.geom.Point;&lt;p /&gt;import mx.collections.CursorBookmark;&lt;br /&gt;import mx.controls.DataGrid;&lt;br /&gt;import mx.controls.dataGridClasses.DataGridColumn;&lt;br /&gt;import mx.controls.listClasses.IListItemRenderer;&lt;br /&gt; import mx.core.mx_internal;&lt;br /&gt;use namespace mx_internal;&lt;p /&gt;&lt;br /&gt;/**&lt;br /&gt; *  A DataGrid subclass that has faster horizontal scrolling&lt;br /&gt; */&lt;br /&gt;public class BetterDataGrid extends DataGrid&lt;br /&gt;{&lt;br /&gt;    public function BetterDataGrid()&lt;br /&gt;     {&lt;br /&gt;        super();&lt;br /&gt;    }&lt;p /&gt;    /**&lt;br /&gt;     *  remember the number of columns in case it changes&lt;br /&gt;     */&lt;br /&gt;    private var lastNumberOfColumns:int;&lt;p /&gt;    /**&lt;br /&gt;     *  a flag as to whether we can use the optimized scrolling&lt;br /&gt;      */&lt;br /&gt;    private var canUseScrollH:Boolean;&lt;p /&gt;    /**&lt;br /&gt;     *  when the horizontal scrollbar is changed it will eventually set horizontalScrollPosition&lt;br /&gt;     *  This value can be set programmatically as well.&lt;br /&gt;      */&lt;br /&gt;    override public function set horizontalScrollPosition(value:Number):void&lt;br /&gt;    {&lt;br /&gt;        // remember the setting of this flag.  We will tweak it in order to keep DataGrid from&lt;br /&gt;        // doing its default horizontal scroll which essentially refreshes every renderer&lt;br /&gt;         var lastItemsSizeChanged:Boolean = itemsSizeChanged;&lt;p /&gt;        // remember the current number of visible columns.  This can get changed by DataGrid&lt;br /&gt;        // as it recomputes the visible columns when horizontally scrolled.&lt;br /&gt;         lastNumberOfColumns = visibleColumns.length;&lt;p /&gt;        // reset the flag for whether we use our new technique&lt;br /&gt;        canUseScrollH = false;&lt;p /&gt;        // call the base class.  If we can use our technique we&amp;#39;ll trip that flag&lt;br /&gt;         super.horizontalScrollPosition = value;&lt;p /&gt;        // if the flag got tripped run our new technique&lt;br /&gt;        if (canUseScrollH)&lt;br /&gt;        {&lt;br /&gt;            scrollLeftOrRight();&lt;br /&gt;            configureScrollBars();&lt;br /&gt;         }&lt;p /&gt;        // reset the flag&lt;br /&gt;        itemsSizeChanged = lastItemsSizeChanged;&lt;p /&gt;    }&lt;p /&gt;&lt;p /&gt;    // remember the parameters to scrollHorizontally to be used in our new technique&lt;br /&gt;    private var pos:int;&lt;br /&gt;     private var deltaPos:int;&lt;br /&gt;    private var scrollUp:Boolean;&lt;p /&gt;    public function get attrColumnIndex():int {&lt;p /&gt;        return _attrColumnIndex;&lt;br /&gt;    }&lt;p /&gt;    public function set attrColumnIndex(o:int):void {&lt;br /&gt;         _attrColumnIndex = o;&lt;br /&gt;    }&lt;p /&gt;    protected var _attrColumnIndex:int = null;&lt;p /&gt;&lt;br /&gt;    // override this method.  If it gets called that means we can use the new technique&lt;br /&gt;    override protected function scrollHorizontally(pos:int, deltaPos:int, scrollUp:Boolean):void&lt;br /&gt;     {&lt;br /&gt;        // just remember the args for later;&lt;br /&gt;        this.pos = pos;&lt;br /&gt;        this.deltaPos = deltaPos;&lt;br /&gt;        this.scrollUp = scrollUp;&lt;br /&gt;        if (deltaPos &amp;lt; visibleColumns.length)&lt;br /&gt;        {&lt;br /&gt;             canUseScrollH = true;&lt;p /&gt;            // need this to prevent DG from asking for a full refresh&lt;br /&gt;            itemsSizeChanged = true;&lt;br /&gt;        }&lt;br /&gt;    }&lt;p /&gt;    /**&lt;br /&gt;     *  The new technique does roughly what we do vertically.  We shift the renderers on screen and in the&lt;br /&gt;      *  listItems array and only make the new renderers.&lt;br /&gt;     *  Because we can&amp;#39;t get internal access to the header, we fully refresh it, but that&amp;#39;s only one row&lt;br /&gt;     *  of renderers.  There&amp;#39;s significant gains to be made by not fully refreshing the every row of columns&lt;br /&gt;      *&lt;br /&gt;     *  Key thing to note here is that visibleColumns has been updated, but the renderer array has not&lt;br /&gt;     *  That&amp;#39;s why we don&amp;#39;t do this in scrollHorizontally as the visibleColumns hasn&amp;#39;t been updated yet&lt;br /&gt;      *  But because of that, sometimes we have to measure old renderers, and sometimes we measure the columns&lt;br /&gt;     */&lt;br /&gt;    private function scrollLeftOrRight():void&lt;br /&gt;    {&lt;br /&gt;        // trace(&amp;quot;scrollHorizontally &amp;quot; + pos);&lt;br /&gt;         var i:int;&lt;br /&gt;        var j:int;&lt;p /&gt;        var numCols:int;&lt;br /&gt;        var uid:String;&lt;p /&gt;        var curX:Number;&lt;p /&gt;        var rowCount:int = rowInfo.length;&lt;br /&gt;        var columnCount:int = listItems[0].length;&lt;br /&gt;         var cursorPos:CursorBookmark;&lt;p /&gt;        var moveBlockDistance:Number = 0;&lt;p /&gt;        var c:DataGridColumn;&lt;br /&gt;        var item:IListItemRenderer;&lt;br /&gt;        var itemSize:Point;&lt;br /&gt;        var data:Object;&lt;p /&gt;         var xx:Number;&lt;br /&gt;        var yy:Number;&lt;p /&gt;        if (scrollUp) // actually, rows move left&lt;br /&gt;        {&lt;br /&gt;            // determine how many columns we&amp;#39;re discarding&lt;br /&gt;            var discardCols:int = deltaPos;&lt;p /&gt;             // measure how far we have to move by measuring the width of the columns we&lt;br /&gt;            // are discarding&lt;p /&gt;            moveBlockDistance = sumColumnWidths(discardCols, true);&lt;br /&gt;            // trace(&amp;quot;moveBlockDistance = &amp;quot; + moveBlockDistance);&lt;p /&gt;             //  shift rows leftward and toss the ones going away&lt;br /&gt;            for (i = 0; i &amp;lt; rowCount; i++)&lt;br /&gt;            {&lt;br /&gt;                numCols = listItems[i].length;&lt;p /&gt;                 if(numCols == 0) //empty row&lt;br /&gt;                    continue;&lt;p /&gt;                // move the positions of the row, the item renderers for the row,&lt;br /&gt;                // and the indicators for the row&lt;br /&gt;                moveRowHorizontally(i, discardCols, -moveBlockDistance, numCols);&lt;br /&gt;                 // move the renderers within the array of rows&lt;br /&gt;                shiftColumns(i, discardCols, numCols);&lt;br /&gt;                truncateRowArray(i);&lt;br /&gt;            }&lt;p /&gt;            // generate replacement columns&lt;br /&gt;             cursorPos = iterator.bookmark;&lt;p /&gt;            var firstNewColumn:int = lastNumberOfColumns - deltaPos;&lt;br /&gt;            curX = listItems[0][firstNewColumn - 1].x + listItems[0][firstNewColumn - 1].width;&lt;p /&gt; &lt;br /&gt;            for (i = 0; i &amp;lt; rowCount; i++)&lt;br /&gt;            {&lt;br /&gt;                if(iterator == null || iterator.afterLast || !iteratorValid)&lt;br /&gt;                   continue;&lt;br /&gt;                data = iterator.current;&lt;br /&gt;                 iterator.moveNext();&lt;br /&gt;                uid = itemToUID(data);&lt;p /&gt;                xx = curX;&lt;br /&gt;                yy = rowInfo[i].y;&lt;br /&gt;                for (j = firstNewColumn; j &amp;lt; visibleColumns.length; j++)&lt;br /&gt;                 {&lt;br /&gt;                    c = visibleColumns[j];&lt;br /&gt;                    item = setupColumnItemRenderer(c, listContent, i, j, data, uid);&lt;br /&gt;                    //if(!item) return;&lt;br /&gt;                    itemSize = layoutColumnItemRenderer(c, item, xx, yy);&lt;br /&gt;                     xx += itemSize.x;&lt;br /&gt;                }&lt;br /&gt;                // toss excess columns&lt;br /&gt;                while (listItems[i].length &amp;gt; visibleColumns.length)&lt;br /&gt;                {&lt;br /&gt;                    addToFreeItemRenderers(listItems[i].pop());&lt;br /&gt;                 }&lt;br /&gt;            }&lt;p /&gt;            iterator.seek(cursorPos, 0);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            numCols = listItems[0].length;&lt;p /&gt;            if(deltaPos &amp;gt; visibleColumns.length)&lt;br /&gt;              deltaPos = visibleColumns.length;&lt;p /&gt;            moveBlockDistance = sumColumnWidths(deltaPos, false);&lt;p /&gt;            // shift the renderers and slots in array&lt;br /&gt;            for (i = 0; i &amp;lt; rowCount; i++)&lt;br /&gt;             {&lt;br /&gt;                numCols = listItems[i].length;&lt;br /&gt;                 if(numCols == 0)&lt;br /&gt;                    continue;&lt;p /&gt;                moveRowHorizontally(i, 0, moveBlockDistance, numCols);&lt;br /&gt;                // we add placeholders at the front for new renderers&lt;br /&gt;                 addColumnPlaceHolders(i, deltaPos);&lt;p /&gt;            }&lt;p /&gt;            cursorPos = iterator.bookmark;&lt;p /&gt;            for (i = 0; i &amp;lt; rowCount; i++)&lt;br /&gt;            {&lt;br /&gt;                data = iterator.current;&lt;br /&gt;                 iterator.moveNext();&lt;br /&gt;                uid = itemToUID(data);&lt;p /&gt;                xx = 0;&lt;br /&gt;                yy = rowInfo[i].y;&lt;br /&gt;                for (j = 0; j &amp;lt; deltaPos; j++)&lt;br /&gt;                {&lt;br /&gt;                     c = visibleColumns[j];&lt;br /&gt;                    item = setupColumnItemRenderer(c, listContent, i, j, data, uid);&lt;br /&gt;                    itemSize = layoutColumnItemRenderer(c, item, xx, yy);&lt;br /&gt;                    xx += itemSize.x;&lt;br /&gt;                 }&lt;br /&gt;                // toss excess columns&lt;br /&gt;                while (listItems[i].length &amp;gt; visibleColumns.length)&lt;br /&gt;                {&lt;br /&gt;                    addToFreeItemRenderers(listItems[i].pop());&lt;br /&gt;                 }&lt;br /&gt;            }&lt;p /&gt;            iterator.seek(cursorPos, 0);&lt;br /&gt;        }&lt;p /&gt;        // force update the header&lt;br /&gt;        header.headerItemsChanged = true;&lt;br /&gt;        header.visibleColumns = visibleColumns;&lt;br /&gt;         header.invalidateDisplayList();&lt;br /&gt;        header.validateNow();&lt;p /&gt;        // draw column lines and backgrounds&lt;br /&gt;        drawLinesAndColumnBackgrounds();&lt;br /&gt;    }&lt;p /&gt;    /* override protected function addToFreeItemRenderers(item:IListItemRenderer):void&lt;br /&gt;     {&lt;br /&gt;        if (item) super.addToFreeItemRenderers(item);&lt;br /&gt;    } */&lt;p /&gt;    // if moving left, add up old renderers&lt;br /&gt;    // if moving right, add up new columns&lt;br /&gt;    private function sumColumnWidths(num:int, left:Boolean):Number&lt;br /&gt;     {&lt;br /&gt;        var i:int;&lt;br /&gt;        var value:Number = 0;&lt;br /&gt;        if (left)&lt;br /&gt;        {&lt;br /&gt;            for (i = 0; i &amp;lt; num; i++)&lt;br /&gt;            {&lt;br /&gt;                value += listItems[0][i].width;&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;        else&lt;br /&gt;            for (i = 0; i &amp;lt; num; i++)&lt;br /&gt;            {&lt;br /&gt;                value += visibleColumns[i].width;&lt;br /&gt;            }&lt;p /&gt;        return value;&lt;br /&gt;    }&lt;p /&gt;    // shift position of renderers on screen&lt;br /&gt;     private function moveRowHorizontally(rowIndex:int, start:int, distance:Number, end:int):void&lt;br /&gt;    {&lt;br /&gt;        for (;start &amp;lt; end; start++)&lt;br /&gt;        if(listItems[rowIndex][start]){&lt;br /&gt;            listItems[rowIndex][start].x += distance;&lt;br /&gt;         }&lt;br /&gt;    }&lt;p /&gt;    // shift renderer assignments in listItems array&lt;br /&gt;    private function shiftColumns(rowIndex:int, shift:int, numCols:int):void&lt;br /&gt;    {&lt;br /&gt;        var item:IListItemRenderer;&lt;br /&gt;        var uid:String = itemToUID(listItems[rowIndex][0].data);&lt;br /&gt;         for (var i:int = 0; i &amp;lt; shift; i++)&lt;br /&gt;        {&lt;br /&gt;            item = listItems[rowIndex].shift();&lt;br /&gt;            if(item){&lt;br /&gt;                addToFreeItemRenderers(item);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        //rebuild the listContent.visibleData map entry&lt;br /&gt;         listContent.visibleData[uid] = listItems[rowIndex][0];&lt;br /&gt;    }&lt;p /&gt;    // add places in front of row for new columns&lt;br /&gt;    private function addColumnPlaceHolders(rowIndex:int, count:int):void&lt;br /&gt;    {&lt;br /&gt;        for (var i:int = 0; i &amp;lt; count; i++)&lt;br /&gt;         {&lt;br /&gt;            listItems[rowIndex].unshift(null);&lt;br /&gt;        }&lt;br /&gt;    }&lt;p /&gt;    // remove excess columns&lt;br /&gt;    private function truncateRowArray(rowIndex:int):void&lt;br /&gt;    {&lt;br /&gt;        while (listItems[rowIndex].length &amp;gt; visibleColumns.length)&lt;br /&gt;         {&lt;br /&gt;            var item:IListItemRenderer;&lt;br /&gt;            {&lt;br /&gt;                item = listItems[rowIndex].pop();&lt;br /&gt;                addToFreeItemRenderers(item);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;p /&gt;    override protected function drawVerticalLine(s:Sprite, colIndex:int, color:uint, x:Number):void&lt;br /&gt;     {&lt;br /&gt;        if(!attrColumnIndex){&lt;br /&gt;            super.drawVerticalLine(s:Sprite, colIndex:int, color:uint, x:Number);&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        if (colIndex == attrColumnIndex-pos)&lt;br /&gt;        {&lt;br /&gt;             var colour:uint = 0xFF0000;&lt;br /&gt;            super.drawVerticalLine(s,colIndex,colour,x);&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        super.drawVerticalLine(s,colIndex,color,x);&lt;br /&gt;    }&lt;p /&gt; }&lt;br /&gt;} &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/betterdatagrid-improved"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-8602217318958426101?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8602217318958426101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8602217318958426101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8602217318958426101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8602217318958426101'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/betterdatagrid-improved.html' title='BetterDataGrid Improved'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8681097231681924958</id><published>2010-03-11T14:43:00.001-08:00</published><updated>2010-03-11T14:43:33.814-08:00</updated><title type='text'>Mockito</title><content type='html'>&lt;div class='posterous_autopost'&gt;&lt;div style=""&gt;&lt;h3 style=""&gt;Mockito is a framework to help you create stubs and mocks quickly if you do Unit Testing.&lt;/h3&gt;&lt;div&gt;Check the link out and the tutorial.&amp;nbsp;&lt;/div&gt;&lt;h3 style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/Home"&gt;http://bitbucket.org/loomis/mockito-flex/wiki/Home&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style=""&gt;Tutorial for version 1.0&lt;/h3&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;This tutorial is unit testing framework agnostic. For examples on how to use it with specific unit testing frameworks please check the&amp;nbsp;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Integrations" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;integrations&lt;/a&gt;&amp;nbsp;section.&lt;/p&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Let's&lt;/p&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Before you will be able to create your mock objects you need to tell Mockito to prepare for it. You do it by calling:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;prepareClasses&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;([...])&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;and providing all the classes to mock in given test case. Since the bytecode generation is an asynchronous process it is recommended to use one of the integration test cases as they address this issue. You may find more answers in&lt;a href="http://asmock.sourceforge.net/" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;Asmock&lt;/a&gt;&amp;nbsp;documentation.&lt;/p&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;After preparing classes you can create mock objects by invoking:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Dependency&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;mock&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;));&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Then setup the System Under Test (SUT)&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="k" style="font-weight: bold;"&gt;new&lt;/span&gt; &lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;And execute tested code.&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;testedFunction&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Given the testedFunction looks like this:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;2&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;3&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;4&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="kd" style="font-weight: bold;"&gt;function &lt;/span&gt;&lt;span class="nf" style="color: rgb(153, 0, 0); font-weight: bold;"&gt;testedFunction&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;int&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;):&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;void&lt;/span&gt; &lt;a name="cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="o" style="font-weight: bold;"&gt;{&lt;/span&gt; &lt;a name="cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;dependencyResult&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="o" style="font-weight: bold;"&gt;}&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Notice that there is no 'unexpected call' exception.&lt;/p&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Instead you are free to choose what you want to verify:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;verify&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;().&lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;));&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;The full test would look like this:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 1&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 2&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 3&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 4&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-5" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 5&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-6" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 6&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-7" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 7&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-8" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 8&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-9" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 9&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-10" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;10&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="o" style="font-weight: bold;"&gt;...&lt;/span&gt; &lt;a name="cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;prepareClasses&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;([&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;]);&lt;/span&gt; &lt;a name="cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="o" style="font-weight: bold;"&gt;...&lt;/span&gt; &lt;a name="cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Dependency&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;mock&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;));&lt;/span&gt; &lt;a name="cl-5" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// given&lt;/span&gt; &lt;a name="cl-6" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="k" style="font-weight: bold;"&gt;new&lt;/span&gt; &lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-7" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// when&lt;/span&gt; &lt;a name="cl-8" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;testedFunction&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-9" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// then&lt;/span&gt; &lt;a name="cl-10" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;verify&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;().&lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;));&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;As you can see, verification happens where assertions go. Not before the tested code. Important note is that verify() is equivalent to verify(times(1)).&lt;/p&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;If you need to stub dependency, you define it upfront.&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;given&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;)).&lt;/span&gt;&lt;span class="n"&gt;willReturn&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;1&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;When used in test it would look like this:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 1&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 2&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 3&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 4&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-5" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 5&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-6" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 6&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-7" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 7&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-8" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 8&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-9" style="color: rgb(43, 84, 125); text-decoration: none;"&gt; 9&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-10" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;10&lt;/a&gt; &lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-11" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;11&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="o" style="font-weight: bold;"&gt;...&lt;/span&gt; &lt;a name="cl-2" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;prepareClasses&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;([&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;]);&lt;/span&gt; &lt;a name="cl-3" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="o" style="font-weight: bold;"&gt;...&lt;/span&gt; &lt;a name="cl-4" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Dependency&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;mock&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;));&lt;/span&gt; &lt;a name="cl-5" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// given&lt;/span&gt; &lt;a name="cl-6" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="kd" style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt; &lt;span class="o" style="font-weight: bold;"&gt;=&lt;/span&gt; &lt;span class="k" style="font-weight: bold;"&gt;new&lt;/span&gt; &lt;span class="kt" style="color: rgb(68, 85, 136); font-weight: bold;"&gt;Sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-7" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;given&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;)).&lt;/span&gt;&lt;span class="n"&gt;willReturn&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;1&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-8" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// when&lt;/span&gt; &lt;a name="cl-9" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;testedFunction&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;a name="cl-10" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="c1" style="color: rgb(153, 153, 136); font-style: italic;"&gt;// then&lt;/span&gt; &lt;a name="cl-11" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt; &lt;span class="n"&gt;assertEquals&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;1&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sut&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;dependencyResult&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;It may be useful to verify or define stubbing with various arguments at a time or have ability of matching the specific cases. For that purpose Mockito provides Matchers. Below example verifies any arguments passed to the function:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;verify&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;().&lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;any&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;()));&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Similar you can do with stubbing:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;given&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;any&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;())).&lt;/span&gt;&lt;span class="n"&gt;willReturn&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;1&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;);&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;As you can see you can either use explicit values or matchers when defining stubs or verifying. But you cannot mix it within single stub definition or verification. So for instance:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;verify&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;().&lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;progress&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;update&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;10&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;any&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;()))&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;is invalid. Mockito will not be able to figure out which argument type to match against the any() matcher. You may want to verify multiple executions of a method at time. It's easy. Just tell how to verify:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;div class="linenodiv" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a href="http://bitbucket.org/loomis/mockito-flex/wiki/tutorials/Tutorial1.0#cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;1&lt;/a&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code" style="padding-left: 3px; padding-right: 3px;"&gt;&lt;div class="highlight" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;&lt;pre style=""&gt;&lt;a name="cl-1" style="color: rgb(43, 84, 125); text-decoration: none;"&gt;&lt;/a&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;verify&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;times&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: rgb(0, 153, 153);"&gt;3&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;)).&lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dependency&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;someOperation&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mockito&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span class="na" style="color: rgb(0, 128, 128);"&gt;any&lt;/span&gt;&lt;span class="o" style="font-weight: bold;"&gt;()));&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="margin-top: 1.33em; margin-right: 0px; margin-bottom: 1.33em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"&gt;Sometimes you may want to make sure method has not been called. Do it by verifying:&lt;/p&gt;&lt;table class="highlighttable" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-collapse: collapse;"&gt;&lt;tr&gt;&lt;td class="linenos" style=""&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/mockito-0"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-8681097231681924958?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8681097231681924958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8681097231681924958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8681097231681924958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8681097231681924958'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/mockito.html' title='Mockito'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7477089155976648319</id><published>2010-03-11T05:53:00.001-08:00</published><updated>2010-03-11T05:53:14.080-08:00</updated><title type='text'>Ever wondered how to see the entire stack trace how you got to a particular method? (without trawling through eclipse and tons fo breakpoints)</title><content type='html'>&lt;div class='posterous_autopost'&gt;      &lt;p&gt;&lt;code&gt;&lt;span style="font-size: 9.0pt;"&gt;trace(new Error().getStackTrace())&lt;/span&gt;&lt;/code&gt;&lt;span style="font-size: 10.0pt; font-family: Arial; color: navy;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial; color: navy;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial; color: navy;"&gt;Handy &amp;#8230;. &lt;/span&gt;&lt;span style="font-size: 10.0pt; font-family: Wingdings; color: navy;"&gt;J&lt;/span&gt;&lt;span style="font-size: 10.0pt; font-family: Arial; color: navy;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial; color: navy;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;The contents of this message and any attachments to it are confidential and may be legally privileged. If you have received this message in error you should delete it from your system immediately and advise the sender. dunnhumby may monitor and record all emails. The views expressed in this email are those of the sender and not those of dunnhumby.&lt;/pre&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/ever-wondered-how-to-see-the-entire-stack-tra"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7477089155976648319?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7477089155976648319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7477089155976648319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7477089155976648319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7477089155976648319'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/ever-wondered-how-to-see-entire-stack.html' title='Ever wondered how to see the entire stack trace how you got to a particular method? (without trawling through eclipse and tons fo breakpoints)'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-5785305744627272070</id><published>2010-03-11T05:48:00.001-08:00</published><updated>2010-03-11T05:48:12.369-08:00</updated><title type='text'>Nice Css list for flex.</title><content type='html'>&lt;div class='posterous_autopost'&gt;      &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial;"&gt;&lt;a href="http://www.loscavio.com/downloads/blog/flex3_css_list/flex3_css_list.htm"&gt;http://www.loscavio.com/downloads/blog/flex3_css_list/flex3_css_list.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 12.0pt;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;The contents of this message and any attachments to it are confidential and may be legally privileged. If you have received this message in error you should delete it from your system immediately and advise the sender. dunnhumby may monitor and record all emails. The views expressed in this email are those of the sender and not those of dunnhumby.&lt;/pre&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/nice-css-list-for-flex"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-5785305744627272070?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/5785305744627272070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=5785305744627272070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5785305744627272070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5785305744627272070'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/nice-css-list-for-flex.html' title='Nice Css list for flex.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7019187929283863934</id><published>2010-03-01T03:38:00.001-08:00</published><updated>2010-03-05T13:48:34.880-08:00</updated><title type='text'>Getters&amp;Setters done easily in as3 eclipse</title><content type='html'>&lt;a href="http://eokyere.blogspot.com/2007/09/productivity-with-dash-in-eclipse.html"&gt;http://eokyere.blogspot.com/2007/09/productivity-with-dash-in-eclipse.html.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7019187929283863934?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7019187929283863934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7019187929283863934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7019187929283863934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7019187929283863934'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/03/getters-done-easily-in-as3-eclipse.html' title='Getters&amp;amp;Setters done easily in as3 eclipse'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-1507340764524385242</id><published>2010-02-26T01:31:00.001-08:00</published><updated>2010-02-26T01:31:44.961-08:00</updated><title type='text'>My Eclipse Installations Reference</title><content type='html'>&lt;div class='posterous_autopost'&gt;      &lt;div&gt; &lt;p&gt;&lt;span style="font-size: 10.0pt; font-family: Arial;"&gt;&lt;a href='http://posterous.com/getfile/files.posterous.com/fasanya/GrlEUKkVutTgwL8etTpUqiiGDPNvMXDJlXQHoB1zqfjwKDbEjT5D3sYjhukP/image001.jpg.scaled.1000.jpg'&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/fasanya/VK2NO5xFP7BJBqi4uCvcPerS4FUf6gZffCvLSuW73zjDkRQu9MKieMZ2GnTZ/image001.jpg.scaled.500.jpg" width="500" height="400"/&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 12.0pt;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt; &lt;pre&gt;The contents of this message and any attachments to it are confidential and may be legally privileged. If you have received this message in error you should delete it from your system immediately and advise the sender. dunnhumby may monitor and record all emails. The views expressed in this email are those of the sender and not those of dunnhumby.&lt;/pre&gt; &lt;p style="font-size: 10px;"&gt; &lt;a href="http://posterous.com"&gt;Posted via email&lt;/a&gt;  from &lt;a href="http://fasanya.posterous.com/my-eclipse-installations-reference"&gt;fasanya's posterous&lt;/a&gt; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-1507340764524385242?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/1507340764524385242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=1507340764524385242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1507340764524385242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1507340764524385242'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/02/my-eclipse-installations-reference.html' title='My Eclipse Installations Reference'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-2557718331500975710</id><published>2010-02-15T11:30:00.000-08:00</published><updated>2010-02-15T11:43:26.759-08:00</updated><title type='text'>Doc for flex and flash.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flashmagazine.com/images/uploads/software/Doc02_thumb.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 410px; height: 333px;" src="http://www.flashmagazine.com/images/uploads/software/Doc02_thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Yep you can get documentation on as3 from within eclipse but not offline and now its a whole lot easier to set up, you can even bookmark pages, and it's done in air check it out and show your support:&lt;br /&gt;&lt;a href="http://www.airdoc.be/"&gt;http://www.airdoc.be/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The eclipse plugin and other downloads:&lt;br /&gt;&lt;a href="http://www.airdoc.be/download#eclipse"&gt;http://www.airdoc.be/download#eclipse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-2557718331500975710?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/2557718331500975710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=2557718331500975710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2557718331500975710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/2557718331500975710'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/02/doc-for-flex-and-flash.html' title='Doc for flex and flash.'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-4533737714535808737</id><published>2010-02-02T11:36:00.000-08:00</published><updated>2010-02-02T11:39:42.488-08:00</updated><title type='text'>Use a filter on a component with text to modify the texts alpha</title><content type='html'>Rather than embed text you can set the filters array of a UIComponent with a filter to change the alpha of the text in a UIComponent!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-4533737714535808737?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/4533737714535808737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=4533737714535808737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4533737714535808737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4533737714535808737'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/02/use-filter-on-component-with-text-to.html' title='Use a filter on a component with text to modify the texts alpha'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-5904322210009220403</id><published>2010-01-16T14:08:00.000-08:00</published><updated>2010-01-16T14:29:27.741-08:00</updated><title type='text'>Dependcy Injection and using an IoC container for Unit Testing not Functional Testing</title><content type='html'>I had to justify at work that there were benefits to using an Inversion of Control container for benefitting Unit testing.&lt;br /&gt;&lt;br /&gt;The argument follows in the letter; Comments please.&lt;br /&gt;&lt;br /&gt;Hi I'm emailing this to you to let me know what you think it to convince developers to use an IOC container for DI to facilitate TDD.&lt;br /&gt;&lt;br /&gt;Many tests that are called unit tests are actually functional tests in that the method under test is in a class that uses other classes and these classes in turn use even more classes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.javaranch.com/journal/200603/functional-test-1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="http://www.javaranch.com/journal/200603/functional-test-1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;VERSUS&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.javaranch.com/journal/200603/unit-test-1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 246px;" src="http://www.javaranch.com/journal/200603/unit-test-1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaranch.com/unit-testing/too-functional.jsp"&gt;&lt;br /&gt;See href="http://www.javaranch.com/unit-testing/too-functional.jsp&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To me a unit test should test a method as that is a true unit. Especially if you are doing TDD as private/internal methods needed to be tested too. Not just APIs of classes and if a high target test coverage is to be &lt;span style="font-style:italic;"&gt; measurably&lt;/span&gt; achieved then limiting tests to APIs of classes is inadequate.&lt;br /&gt;&lt;br /&gt;Now because of our classes using classes that in turn use even more classes, what happens is to test a method we have to satisfy all the dependencies that our method uses not only in the class the method sits in but in all the other classes that method depends on. Thus creating a dependency chain.&lt;br /&gt;&lt;br /&gt;These other classes which are dependencies are rarely written by one developer in fact they are often written by several developers of varying abilities and in doing so progamming methods are not employed that facilitate dependency injection.&lt;br /&gt;&lt;br /&gt;In particular:&lt;br /&gt;1) Avoiding the instantiation of the dependency in the class itself by the use of interfaces and then using setter or constructor injection.&lt;br /&gt;2) Writing code like classAInstance.classBInstance.property creating a dependency chain and tight coupling.&lt;br /&gt;3) Using Flex's data binding mechanism to pass dependencies through the application instead of setters/getters.&lt;br /&gt;4) Creating dependency chains by having in ClassX  object1,  in Class Y object1.object2 where object1 was got from ClassX and  in Class Z object2.object3. where object2 was got from classY.&lt;br /&gt;&lt;br /&gt;This fourth one is particularly subtle in that only when you look at the classes as a set can you often see the problem.&lt;br /&gt;And often arises when we pass a complex object from a service into ClassX and then pick apart this object in classes Y and Z it would also help if we had shallower objects rather than deeply nested ones requiring this picking apart.&lt;br /&gt;&lt;br /&gt;To alleviate these it's useful for a class to contain only the things it must have and nothing else.&lt;br /&gt;&lt;br /&gt;To develop with this in mind given that we are often given complex objects with sub-objects need parsing and refining before we can use them in a particular method being tested. Often we use a delegateStub that passes in this complex data that is then put through the uravelling process in 4), and then passed to the method under test. However this creates functional tests rather than unit tests and hides the need for doing 1).&lt;br /&gt;&lt;br /&gt;For effcient TDD only the objects that the method under test needs should be passed in. This isolation is important as it allows to distinguish more clearly what's necessary for a particular method and what's not, than passing in additional unused data. To pass in this data for a test in a way that doesn't require the unravelling of a delegate stub means having stubs for the method under test and being able to inject this stub or the real thing into the method. This is where a IOC Container is useful as a easily modifiable central and shared repository for all the stub types that all the tests and developers are aware of and can use rather than them being created in several TestCase/TestSuite classes hidden away until the next developer happens to come across the class AND the method within that class. The Container highlights and calls out the data and models being injected and facilitates their use throughout the application by simply using the [Inject] metatag.&lt;br /&gt;&lt;br /&gt;Now once our classes are set up so that they can be injected into with concrete implementations of interfaces. We can inject stubs or the real classes that are used in implementation and the configuration that a container provides facilitates this in short. A container allows us to move away from functional testing created by 1)-4) and closer to unit testing.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;Comments will be appreciated.&lt;a href="http://"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-5904322210009220403?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/5904322210009220403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=5904322210009220403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5904322210009220403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5904322210009220403'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2010/01/ioc-container-for-unit-testing-not.html' title='Dependcy Injection and using an IoC container for Unit Testing not Functional Testing'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8528395819834320601</id><published>2009-12-14T04:27:00.000-08:00</published><updated>2009-12-14T04:51:09.874-08:00</updated><title type='text'>Eclipse plugins for flex development</title><content type='html'>A collection of useful plugins:&lt;br /&gt;Flex Formatter:&lt;br /&gt;This is an Eclipse editor tool to provide source code formatting for Adobe Flex code (i.e. Actionscript and MXML). the guy ernestpasour a set of formatting options which hopefully covers the most popular coding conventions.&lt;br /&gt;http://sourceforge.net/projects/flexformatter/&lt;br /&gt;&lt;br /&gt;AnyEdit: &lt;br /&gt;Plugin adds several new tools to the context menu of text- based Eclipse editors, to output consoles, to Eclipse main menu and editor toolbar. AnyEdit contributes also Import/Export working sets wizards:&lt;br /&gt;http://andrei.gmxhome.de/anyedit/index.html&lt;br /&gt;&lt;br /&gt;AIR GEAR:&lt;br /&gt;Is an Eclipse Plug-In which provides RAD development for Adobe AIR. AIR GEAR provides following features:&lt;br /&gt;http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=AmaterasAIR&lt;br /&gt;&lt;br /&gt;IDE Factory:&lt;br /&gt;The Source for Enterprise Flex Development Tools apparently currently beta and I don't think this will be free when released.&lt;br /&gt;http://www.idefactory.com/&lt;br /&gt;&lt;br /&gt;KeepResident:&lt;br /&gt;Supposed to improve performance by Windows virtual memory manager not keeping resident RAM for eclipses java processes. This is supposed to help with that.&lt;br /&gt;http://suif.stanford.edu/pub/keepresident/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-8528395819834320601?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8528395819834320601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8528395819834320601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8528395819834320601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8528395819834320601'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2009/12/eclipse-plugins-for-flex-development.html' title='Eclipse plugins for flex development'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-5685782024874528815</id><published>2009-12-12T05:38:00.000-08:00</published><updated>2009-12-14T02:02:10.756-08:00</updated><title type='text'>Power laws in the social economy</title><content type='html'>Great Article on 22 Power laws that will govern what many see as the economy of the 21st century - the social economy by Dion Hinchcliffe.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=961&amp;tag=nl.e539"&gt;http://blogs.zdnet.com/Hinchcliffe/?p=961&amp;tag=nl.e539&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the laws in summary:&lt;br /&gt;Amara's law:&lt;br /&gt;We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run.&lt;br /&gt;&lt;br /&gt;Beckstroms law:&lt;br /&gt;The value of a network equals the net value of each user’s transactions conducted through that network, valued from the perspective of each user, and summed for all.&lt;br /&gt;&lt;br /&gt;Dunbar’s Number:&lt;br /&gt;150 the number of social relationships that the average person can effectively maintain before overload occurs.&lt;br /&gt;&lt;br /&gt;Gilder’s Law:&lt;br /&gt;Network bandwidth triples every 18 months... thus raw communication capability is improving faster than computing power is increasing also means the cost of communication, no matter how complex, is collapsing rapidly towards zero.&lt;br /&gt;&lt;br /&gt;Goodharts Law:&lt;br /&gt;Once a social or economic indicator or other surrogate measure is made a target for the purpose of conducting social or economic policy, then it will lose the information content that would qualify it to play such a role.&lt;br /&gt;&lt;br /&gt;Hawthorne Effect:&lt;br /&gt;Shows you tend to manage what you measure and goes hand in hand with Goodharts, it states - Subjects in a setting will improve aspects of their behavior being experimentally measured simply in response to the fact that they are being studied.&lt;br /&gt;&lt;br /&gt;Hotelling’s Law:&lt;br /&gt;This is a product rule that says it’s natural and rational for businesses to make their products as similar as possible. Even in the age of mass customisation and differentiation this shows the importance of determining what should follow this law and what shouldn't and instead be customised.&lt;br /&gt;&lt;br /&gt;Jakob’s Law:&lt;br /&gt;Users spend most of their time on other sites, and so you must be there too. Take a look at the ways you should push your solution rather than pull them to a site.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://web2.socialcomputingjournal.com/building_modern_web_apps_better_a_have_deep_competency_in_w.htm"&gt;http://web2.socialcomputingjournal.com/building_modern_web_apps_better_a_have_deep_competency_in_w.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rSBse5UJDuw/SyOykN3q_dI/AAAAAAAAAGc/7SqjEDg8A44/s1600-h/web_product_distribution_models.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 313px; height: 320px;" src="http://4.bp.blogspot.com/_rSBse5UJDuw/SyOykN3q_dI/AAAAAAAAAGc/7SqjEDg8A44/s320/web_product_distribution_models.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5414367512297668050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kurtosis Risk:&lt;br /&gt;Kurtosis Risk occurs whenever observations are occur at high frequency at high frequency at normal distribution end tails.&lt;br /&gt;&lt;br /&gt;Long Tail:&lt;br /&gt;The Long Tail or long tail is a retailing concept describing the niche strategy of selling a large number of unique items in relatively small quantities – usually in addition to selling fewer popular items in large quantities. The concept was popularised by Chris Anderson in an October 2004 Wired magazine article, in which he mentioned Amazon.com and Netflix as examples of businesses applying this strategy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rSBse5UJDuw/SyPOhFC2-rI/AAAAAAAAAGk/M6qQe9vr8s8/s1600-h/180px-Network_effect.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 144px; height: 320px;" src="http://4.bp.blogspot.com/_rSBse5UJDuw/SyPOhFC2-rI/AAAAAAAAAGk/M6qQe9vr8s8/s320/180px-Network_effect.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5414398244714642098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Metcalfe's law:&lt;br /&gt;Metcalfe's law states that the value of a network is proportional to the square of the number of connected nodes of the system. Precisely its the triangle number n(n-1)/2 where n is the number of nodes this is proportional to n squared asymptotically. (for large n). See Reed’s Law.&lt;br /&gt;&lt;br /&gt;Moore's Law:&lt;br /&gt;Computing power doubles every eighteen months(see Gilder’s Law). However the speed and capacity of storage and communication networks has greatly exceeded Moore’s Law for quite some time now and consequently is driving dislocation in many traditional computing models where processing power used to dominate. Not only is this making distributed computing more attractive and making new techniques possible, the fact that computing hasn’t kept up with the network ensures that the network will continue to dominate as a growth engine in terms of it’s overall ability to deliver real business value. The fundamental (and slightly oversimplified) implication is that business models tied to computing can’t compete with business models that are tied to communication, which as we’ll see with Reed’s Law, is significant.&lt;br /&gt;&lt;br /&gt;Network Effect:&lt;br /&gt;Is the effect that one user of a good or service has on the value of that product to other people. When network effect is present, the value of a product or service increases as more people use it.&lt;br /&gt;Enterprise software is now experiencing the network effect of viral, Web 2.0 platforms, and Dion's seen numerous recurring instances of platforms such as MediaWiki pushing larger, established enterprise installations (Sharepoint!!) to the sides of their organizations through simple patterns such as network effects by default.&lt;br /&gt;&lt;br /&gt;Pareto Principle:&lt;br /&gt;80/20 Roughly 80% of the effects come from 20% of the causes. &lt;br /&gt;Any complex system, including social ones, and increasingly social and community dynamics are seen as falling under this rule in numerous ways.&lt;br /&gt;&lt;br /&gt;Principle Of Least Power:&lt;br /&gt;Given a choice among computer languages, classes of which range from descriptive to procedural, the less procedural, more descriptive the language one chooses, the more one can do with the data stored in that language.&lt;br /&gt;In practice, it has considerable implications for the knowledge economy. Data that is trapped in complex or obscure formats can’t be searched or otherwise processed, and the success of the Web as a content medium has largely been responsible for giving this principle its credibility. HTML and SQL are good examples of this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Principle Of Least Effort:&lt;br /&gt;Postulates that animals, people, even well designed machines will naturally choose the path of least resistance or "effort".&lt;br /&gt;An information seeking client will tend to use the most convenient search method, in the least exacting mode available. Information seeking behavior stops as soon as minimally acceptable results are found. This theory holds true regardless of the user's proficiency as a searcher, or their level of subject expertise. Also this theory takes into account the user’s previous information seeking experience. The user will use the tools that are most familiar and easy to use that find results. The principle of least effort is known as a “deterministic description of human behavior.”[1] The principle of least effort applies not only in the library context, but also to any information seeking activity. For example, one might consult a generalist co-worker down the hall rather than a specialist in another building, so long as the generalist's answers were within the threshold of acceptability.&lt;br /&gt;&lt;br /&gt;Reed’s Law:&lt;br /&gt;Reed's law is the assertion of David P. Reed that the utility of large networks, particularly social networks, can scale exponentially with the size of the network.&lt;br /&gt;&lt;br /&gt;The reason for this is that the number of possible sub-groups of network participants is 2^N - N - 1 \, where N is the number of participants. This grows much more rapidly than either&lt;br /&gt;&lt;br /&gt;    * the number of participants, N, or&lt;br /&gt;    * the number of possible pair connections, \frac{N(N-1)}{2} (which follows Metcalfe's law)&lt;br /&gt;&lt;br /&gt;so that even if the utility of groups available to be joined is very small on a peer-group basis, eventually the network effect of potential group membership can dominate the overall economics of the system.&lt;br /&gt;&lt;br /&gt;Reflexivity (The Social Theory)&lt;br /&gt;In effect action and reaction can feed off each other to create a positive feedback loop that eventually changes the action and reaction and the actors and reactors particularly their expectations and objectives! Explaining the tendency of social systems to move away from equilibrium and often towards extremes (flame wars, viral feedback loops, rapid information propagation, etc including inadvertently falling in love!&lt;br /&gt;&lt;br /&gt;Sarnoff’s Law:&lt;br /&gt;Another way to value the network, Sarnoff’s Law, created to describe older one-way networks such as broadcast medium like TV or radio, says “the value of a broadcast network is proportional to the number of viewers.” A more modern version of this is Beckstrom’s Law.&lt;br /&gt;&lt;br /&gt;Taleb distribution:&lt;br /&gt;The Taleb distribution is a probability distribution where there is a high likelihood of a small gain combined with a small probability of a very large loss, which would more than outweighs any gain. Taleb distribution is interesting to the social economy for the same reasons as Kurtosis Risk: It can make social business options such as crowdsourcing and other open business models more balanced when looked at in this light because it can appropriately highlight the lack of predictability and identify unacceptable risk profiles.&lt;br /&gt;&lt;br /&gt;Thomas Theorem:&lt;br /&gt;The Thomas Theorem identifies a trend that is particularly common within social worlds that any definition of the situation will influence the present. The theorem stresses social situations including in family, business, or other life as fundamental to the role of the participant when mentally creating a social world “in which subjective impressions can be projected on to life and thereby become real to projectors.” This is how social worlds, on a network or otherwise, can take on a life of their own. The reputation and standing of individuals as they perceived on networks, is often very different from what they have in real life. This has implications for HR, promotions, rewards, and motivations in enterprise social computing environments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-5685782024874528815?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/5685782024874528815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=5685782024874528815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5685782024874528815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/5685782024874528815'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2009/12/power-laws-in-social-economy.html' title='Power laws in the social economy'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rSBse5UJDuw/SyOykN3q_dI/AAAAAAAAAGc/7SqjEDg8A44/s72-c/web_product_distribution_models.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-6771412002730696284</id><published>2009-11-11T05:57:00.000-08:00</published><updated>2009-11-11T14:31:43.093-08:00</updated><title type='text'>Unloading Modules</title><content type='html'>Having spent signigicant time investigating module unloading - I want to highlight the importance of removing focus from the module before being unloaded - see Alex Harui's blog enrty on unloading modules - http://blogs.adobe.com/aharui/.&lt;br /&gt;&lt;br /&gt;I tried to set the focus onto something external to my module containing an clickable Advdatagrid however this didn't work so I then ensured that focus couldnt be set on the Advdatagrid not by using ADG.focusEnabled but by setting the selectable property of the ADG to false and then adding event listeners to the column  to listen for item click events.&lt;br /&gt;&lt;br /&gt;This raised a question finding the item associated with a col when the above properties are disabled the solution was to add a listener to the column as events are still flowing.&lt;br /&gt;&lt;br /&gt;the code to get the selctedItem looks like tGhis:&lt;br /&gt;&lt;br /&gt; private function firstColumnItemClick(evt:ListEvent):void&lt;br /&gt;            {&lt;br /&gt;             selectedItem = AdvancedDataGrid(evt.currentTarget).selectedItem;&lt;br /&gt;//first column&lt;br /&gt;              if(evt.columnIndex==0)&lt;br /&gt;                {&lt;br /&gt;                 var adgGIR:AdvancedDataGridGroupItemRenderer = &lt;br /&gt;//get the ADGGItemRenderer off the list event&lt;br /&gt;evt.itemRenderer as AdvancedDataGridGroupItemRenderer;&lt;br /&gt;&lt;br /&gt;//get the AdvancedDataGridListData  open which lives the item property.&lt;br /&gt;                 var listData:AdvancedDataGridListData = adgGIR.listData as AdvancedDataGridListData;&lt;br /&gt;//set slectedItem to the listData's Item.&lt;br /&gt;                 selectedItem = listData.item;&lt;br /&gt;//a method to expand the tree node given that you know what item:Object (representing row data)&lt;br /&gt;                 expandDataGridItem(evt);&lt;br /&gt;               }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private function expandDataGridItem(evt:Event):void&lt;br /&gt;            {&lt;br /&gt;                rangerReviewsDataGrid.expandItem(selectedItem, true, true);&lt;br /&gt;            }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-6771412002730696284?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/6771412002730696284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=6771412002730696284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6771412002730696284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/6771412002730696284'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2009/11/unloading-modules.html' title='Unloading Modules'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-1264044869185710697</id><published>2008-10-28T10:29:00.000-07:00</published><updated>2009-12-11T07:22:43.146-08:00</updated><title type='text'>EPSON</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rSBse5UJDuw/SyJju6qSeRI/AAAAAAAAAGM/wsHHRlQ8Y4s/s1600-h/epsonHomePage.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 257px;" src="http://2.bp.blogspot.com/_rSBse5UJDuw/SyJju6qSeRI/AAAAAAAAAGM/wsHHRlQ8Y4s/s320/epsonHomePage.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5413999359724517650" /&gt;&lt;/a&gt;&lt;br /&gt;This is a custom interactive dynamic carousel I made for the epson homepage while at Sapient. The path of the motion and the easing are all configurable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.epson.co.uk/"&gt;http://www.epson.co.uk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or in french!&lt;br /&gt;&lt;a href="http://www.epson.fr/"&gt;http://www.epson.fr/&lt;/a&gt;;&lt;br /&gt;&lt;br /&gt;Or in Spanish!!&lt;br /&gt;&lt;a href="http://www.epson.es/"&gt;http://www.epson.es/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-1264044869185710697?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/1264044869185710697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=1264044869185710697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1264044869185710697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/1264044869185710697'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2008/10/ut-flash.html' title='EPSON'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rSBse5UJDuw/SyJju6qSeRI/AAAAAAAAAGM/wsHHRlQ8Y4s/s72-c/epsonHomePage.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-7201745370420956900</id><published>2008-03-13T08:56:00.000-07:00</published><updated>2009-01-27T04:48:16.864-08:00</updated><title type='text'>SMILE Mathematics</title><content type='html'>Here are several older applications that I did at SMILE Mathematics which is no more.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059155"&gt;Division Buster&lt;/a&gt;&lt;br /&gt;Like the old TV Show BlockBuster but with division questions... Anyway the path checking algorithm was interesting in this!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059076"&gt;Nim&lt;/a&gt;&lt;br /&gt;The objective of this game is to make sure your opponent is the last person to pick up a pencil I think this game is played with matchsticks but that wasn't deemed appropriate for schools! This game can be played against the computer and again required the development of a logic and a bit of research on the problem to determine a good computer strategy. you'll be hard pressed to beat the comp, and this one does require reading the instructions!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059203"&gt;Towers of Hanoi&lt;/a&gt;&lt;br /&gt;A classic game that's been seen many times before event on the web. This one records moves and replays them and if you can do three ring easily enough. Change the options.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059381"&gt;Enlarging Pentominoes&lt;/a&gt;&lt;br /&gt;This is basically a jigsaw but the interesting thing about it is there are several ways to complete each jigsaw this required developing algorithms to analyse that the jigsaw had been completed in a more abstract way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059626"&gt;Building Pentominoes&lt;/a&gt;&lt;br /&gt;Similarly as with Enlarging Pentominoes this simple to play game used graph theory to analyse the pentominoes to determine which ones they were regardless of symmetry. So if you created the same shape upside down the program would recognise it. See if you can find all twelve pentominoes!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059728"&gt;Darts&lt;/a&gt; &lt;br /&gt;Here you're forced to do the maths in this game, one version requires a modicum of skill!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233059792"&gt;Adds Up To&lt;/a&gt;&lt;br /&gt;Again this game required the computer to analyse potential moves - breadth first search - while also preventing the other player from winning.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As did this....&lt;a href="http://www.swfcabin.com/open/1233059982"&gt;Minimax&lt;/a&gt;&lt;br /&gt;This requires you to play against and beat the computer using skill this was a good one  to do for developing the computer logic for making moves as the numbers come up arbitrarily.The instructions in this are for a different game (The instructions never got finished!) you must try and beat your opponent (try and beeat the computer) by getting either the smallest or largest result.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060076"&gt;Frogs&lt;/a&gt;&lt;br /&gt;Simple game of can you get the frogs to the other side, this main view is from an isometric perspective. The number of frogs can be changed dynamically and the moves you've made are recorded, tabulated and can be replayed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060127"&gt;Magic Squares&lt;/a&gt;&lt;br /&gt;A simple game to play but not so simple to complete. If you like Sudoku you might like this!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060186"&gt;Boat&lt;/a&gt;&lt;br /&gt;Another nice one to play. Can you get the bugs all other to the other side!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060238"&gt;Jugs&lt;/a&gt;&lt;br /&gt;This one was another one where the recording and replay was seen as useful.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some others from way back!&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060305"&gt;Angle Fit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060371"&gt;Maximum Remainder&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.swfcabin.com/open/1233060420"&gt;Tensprint&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-7201745370420956900?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/7201745370420956900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=7201745370420956900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7201745370420956900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/7201745370420956900'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2008/03/older-educational-projects.html' title='SMILE Mathematics'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-8745522399688977251</id><published>2008-03-05T03:00:00.000-08:00</published><updated>2009-01-27T05:28:51.084-08:00</updated><title type='text'>Projects at MRM</title><content type='html'>I've worked on several projects at MRM Worldwide (&lt;a href="http://www.mrmworldwide.com/"&gt;www.mrmworlwide.com&lt;/a&gt;) Here are some of the more significant ones...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.msnsearchstar.com/"&gt;www.msnsearchstar.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.msnsearchladder.co.uk/"&gt;www.msnsearchladder.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/dynamics/everyonegetsit/default.mspx"&gt;www.microsoft.com/dynamics/everyonegetsit/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/uk/office/newday/default.mspx"&gt;www.microsoft.com/uk/office/newday/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="nobr"&gt;&lt;a href="http://int-crackthecode.mrmpweb.co.uk/" title="Visit page outside Confluence" rel="nofollow"&gt;http://int-crackthecode.mrmpweb.co.uk&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt;&lt;br /&gt;&lt;/th&gt; &lt;th class="confluenceTh"&gt; Answer&lt;br /&gt;&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="confluenceTd"&gt; 0 (Homepage/login)&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; tcp/ip&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="confluenceTd"&gt; 1 (top left)&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; 62658591 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="confluenceTd"&gt; 2 (top right)&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; 0011000100110111&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="confluenceTd"&gt; 3 (bottom left)&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; 25257&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td class="confluenceTd"&gt; 4 (bottom right)&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; 1257632&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;h2&gt;&lt;a name="Intel-CracktheCode-Live"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;A True 3d Carousel for a Microsoft Page - used a pretty useful component for this one.&lt;br /&gt;&lt;a href="http://www.microsoft.com/uk/amazingoffice/"&gt;http://www.microsoft.com/uk/amazingoffice/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another 3d Carousel for the newspaper and marketing association no component this time.&lt;br /&gt;&lt;a href="http://nma.mrmpweb.co.uk/brand-landing-page/"&gt;http://nma.mrmpweb.co.uk/brand-landing-page/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An app whose development is near completion is the Unilever - Walls Kids Fun&lt;br /&gt;&lt;a href="http://uni-kidsfun.mrmpweb.co.uk/en-GB/index.html"&gt;http://uni-kidsfun.mrmpweb.co.uk/en-GB/index.html&lt;/a&gt;&lt;br /&gt;Or if you prefer in French!&lt;br /&gt;&lt;a href="http://uni-kidsfun.mrmpweb.co.uk/fr-fr/index.html"&gt;http://uni-kidsfun.mrmpweb.co.uk/fr-fr/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Microsoft being a big client of ours has meant that I have been learning Silverlight the first app I worked on being a simple videoplayer. Except that compare to Flash it's not so simple this was done in the older version of Silverlight(1.0) That uses javascript!&lt;br /&gt;&lt;a href="http://microsoft-mnp-uk.mrmpweb.co.uk/uk/expression/webharmony/default.aspx"&gt;http://microsoft-mnp-uk.mrmpweb.co.uk/uk/expression/webharmony/default.aspx&lt;/a&gt;&lt;br /&gt;The new version of Silverlight (used to be 1.1 now called 2.0)  is out soon. This uses .net languages -and in particular the one I have done some work in - c sharp.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Imagine Cup 2007&lt;/span&gt;&lt;br /&gt;This application was developed forMicrosoft as a facebook application it used the user profile pic and the friends pic in conjunction with a .swf and server side code to create and save an image of a friend or users face superimposed on a customisable robot. Unfortunately as it was part of a competition that has now closed its no longer available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-8745522399688977251?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/8745522399688977251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=8745522399688977251' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8745522399688977251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/8745522399688977251'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2008/03/projects-at-mrm.html' title='Projects at MRM'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-3122403357830133089</id><published>2007-08-08T04:57:00.000-07:00</published><updated>2007-08-08T05:01:37.739-07:00</updated><title type='text'>Flash Video Progress Bar</title><content type='html'>Progress Bar Dragging only works currently with Flash Media Server&lt;br /&gt;see below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.mrmwanywhere.com/issues/secure/ViewProfile.jspa?name=lyndon.fasanya%40mrmworldwide.co.uk"&gt;Lyndon Fasanya&lt;/a&gt; - [&lt;span class="subText"&gt;&lt;span class="date"&gt;08/Aug/07 11:40 AM&lt;/span&gt;&lt;/span&gt;  ]       &lt;div class="action-body"&gt;I had a look at this issue and to get the playhead to be manipulated manually requires a different set up from the one we have.&lt;br /&gt;&lt;br /&gt;We can only do this in Flash if the video is actually streaming from a Flash Media Server (aka Flash Communication Server);&lt;br /&gt;&lt;br /&gt;This is what happens on sites like you tube.&lt;br /&gt;&lt;br /&gt;Because the videos aren't deployed from this server the playhead can' t be moved - a limitation of Flash.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;     &lt;div id="comment-21445-closed" style="display: none;"&gt;     &lt;div style="background: rgb(240, 240, 240) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;     &lt;div class="action-links subText smallgrey"&gt;     [ &lt;a href="https://www.mrmwanywhere.com/issues/browse/NMA001-14" onclick="toggleDivsWithCookie('comment-21445-open', 'comment-21445-closed'); return false;" class="smallgrey"&gt;Show »&lt;/a&gt; ]     &lt;/div&gt;     &lt;div class="action-details" style="overflow: hidden; height: 1em;"&gt;                 &lt;a name="action_21445"&gt;                                                 &lt;/a&gt;&lt;a href="https://www.mrmwanywhere.com/issues/secure/ViewProfile.jspa?name=lyndon.fasanya%40mrmworldwide.co.uk"&gt;Lyndon Fasanya&lt;/a&gt; - [&lt;span class="subText"&gt;&lt;span class="date"&gt;08/Aug/07 11:40 AM&lt;/span&gt;&lt;/span&gt; ] I had a look at this issue and to get the playhead to be manipulated manually requires a different set up from the one we have. We can only do this in Flash if the video is actually streaming from a Flash Media Server (aka Flash Communication Server); This is what happens on sites like you tube. Because the videos aren't deployed from this server the playhead can' t be moved - a limitation of Flash. &lt;/div&gt;     &lt;/div&gt; &lt;/div&gt; &lt;br /&gt; &lt;script language="JavaScript" type="text/javascript"&gt; &lt;!--     restoreDivFromCookie('comment-21445-open', 'jira.viewissue.cong.cookie', '1');     restoreDivFromCookie('comment-21445-closed', 'jira.viewissue.cong.cookie', '0'); //--&gt; &lt;/script&gt;                                                 &lt;div id="comment-21446-open"&gt; &lt;div class="actionContainer"&gt;     &lt;div class="action-links subText smallgrey"&gt;     [         &lt;a href="https://www.mrmwanywhere.com/issues/browse/NMA001-14#action_21446" title="A permanent link to this comment." class="smallgrey"&gt;Permlink&lt;/a&gt;                       | &lt;a href="https://www.mrmwanywhere.com/issues/browse/NMA001-14" onclick="toggleDivsWithCookie('comment-21446-closed', 'comment-21446-open'); return false;" class="smallgrey"&gt;« Hide&lt;/a&gt;     ]     &lt;/div&gt;     &lt;div class="action-details"&gt;    &lt;a name="action_21446"&gt;                                                 &lt;/a&gt;&lt;a href="https://www.mrmwanywhere.com/issues/secure/ViewProfile.jspa?name=lyndon.fasanya%40mrmworldwide.co.uk"&gt;Lyndon Fasanya&lt;/a&gt; - [&lt;span class="subText"&gt;&lt;span class="date"&gt;08/Aug/07 11:43 AM&lt;/span&gt;&lt;/span&gt;  ]  &lt;/div&gt;     &lt;div class="action-body"&gt;Check out this link for verification of this - to set the play action at a certain time can only occur with the server aforementioned&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00002565.html"&gt;http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00002565.html&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;   &lt;div id="comment-21446-closed" style="display: none;"&gt;     &lt;div style="background: rgb(240, 240, 240) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;     &lt;div class="action-links subText smallgrey"&gt;     [ &lt;a href="https://www.mrmwanywhere.com/issues/browse/NMA001-14" onclick="toggleDivsWithCookie('comment-21446-open', 'comment-21446-closed'); return false;" class="smallgrey"&gt;Show »&lt;/a&gt; ]     &lt;/div&gt;     &lt;div class="action-details" style="overflow: hidden; height: 1em;"&gt;                 &lt;a name="action_21446"&gt;                                                 &lt;/a&gt;&lt;a href="https://www.mrmwanywhere.com/issues/secure/ViewProfile.jspa?name=lyndon.fasanya%40mrmworldwide.co.uk"&gt;Lyndon Fasanya&lt;/a&gt; - [&lt;span class="subText"&gt;&lt;span class="date"&gt;08/Aug/07 11:43 AM&lt;/span&gt;&lt;/span&gt; ] Check out this link for verification of this - to set the play action at a certain time can only occur with the server aforementioned &lt;a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00002565.html"&gt;http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00002565.html&lt;/a&gt;     &lt;/div&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/6060689703404909182-3122403357830133089?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/3122403357830133089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=3122403357830133089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3122403357830133089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3122403357830133089'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2007/08/flash-video-progress-bar.html' title='Flash Video Progress Bar'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-3307670356961938177</id><published>2007-07-09T02:32:00.000-07:00</published><updated>2007-07-09T03:30:18.339-07:00</updated><title type='text'>OCC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rSBse5UJDuw/RpIL3gzyYNI/AAAAAAAAAA8/LXx9ZsSLMeg/s1600-h/CPM+fraction+tool.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_rSBse5UJDuw/RpIL3gzyYNI/AAAAAAAAAA8/LXx9ZsSLMeg/s400/CPM+fraction+tool.png" alt="" id="BLOGGER_PHOTO_ID_5085139977582567634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rSBse5UJDuw/RpILtQzyYMI/AAAAAAAAAA0/RccacrE8ZN8/s1600-h/dotGridSShot.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_rSBse5UJDuw/RpILtQzyYMI/AAAAAAAAAA0/RccacrE8ZN8/s400/dotGridSShot.JPG" alt="" id="BLOGGER_PHOTO_ID_5085139801488908482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rSBse5UJDuw/RpICTwzyYII/AAAAAAAAAAU/ZjryT-S3hOw/s1600-h/coordSaving.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_rSBse5UJDuw/RpICTwzyYII/AAAAAAAAAAU/ZjryT-S3hOw/s400/coordSaving.JPG" alt="" id="BLOGGER_PHOTO_ID_5085129467797594242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rSBse5UJDuw/RpICUAzyYJI/AAAAAAAAAAc/mo5YufQU_F0/s1600-h/multiplication+squares.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_rSBse5UJDuw/RpICUAzyYJI/AAAAAAAAAAc/mo5YufQU_F0/s400/multiplication+squares.JPG" alt="" id="BLOGGER_PHOTO_ID_5085129472092561554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rSBse5UJDuw/RpICUAzyYKI/AAAAAAAAAAk/HAV7oBY9ssI/s1600-h/numberCardsSize.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_rSBse5UJDuw/RpICUAzyYKI/AAAAAAAAAAk/HAV7oBY9ssI/s400/numberCardsSize.JPG" alt="" id="BLOGGER_PHOTO_ID_5085129472092561570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rSBse5UJDuw/RpIBggzyYHI/AAAAAAAAAAM/3jQljOY9rwI/s1600-h/placeValueScreenShot.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_rSBse5UJDuw/RpIBggzyYHI/AAAAAAAAAAM/3jQljOY9rwI/s400/placeValueScreenShot.JPG" alt="" id="BLOGGER_PHOTO_ID_5085128587329298546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm currently developing a suite of user configurable educational mathematical tools for a leading schools publisher.&lt;br /&gt;Within a CMS that teachers can use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-3307670356961938177?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/3307670356961938177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=3307670356961938177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3307670356961938177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/3307670356961938177'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2007/07/occ.html' title='OCC'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rSBse5UJDuw/RpIL3gzyYNI/AAAAAAAAAA8/LXx9ZsSLMeg/s72-c/CPM+fraction+tool.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6060689703404909182.post-4203884112862753379</id><published>2007-07-09T02:23:00.000-07:00</published><updated>2007-07-09T02:25:56.031-07:00</updated><title type='text'>Flash and Flex</title><content type='html'>This blog is all about Flash, Flex and related technologies and their derivatives!&lt;br /&gt;With the aim of making things with these techs faster and easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6060689703404909182-4203884112862753379?l=fasanya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fasanya.blogspot.com/feeds/4203884112862753379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6060689703404909182&amp;postID=4203884112862753379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4203884112862753379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6060689703404909182/posts/default/4203884112862753379'/><link rel='alternate' type='text/html' href='http://fasanya.blogspot.com/2007/07/flash-and-flex.html' title='Flash and Flex'/><author><name>Lyndon Fasanya</name><uri>http://www.blogger.com/profile/10383223862047223527</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_rSBse5UJDuw/SvrN_lUt1LI/AAAAAAAAAFs/lm2WRjQQdBk/S220/Me.jpeg'/></author><thr:total>0</thr:total></entry></feed>
