<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SPLINK</title>
	<atom:link href="http://splink.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://splink.org</link>
	<description>Actionscript 3 &#38; Java Development</description>
	<lastBuildDate>Thu, 08 Jul 2010 11:56:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>actionscript layout framework demo</title>
		<link>http://splink.org/?p=197</link>
		<comments>http://splink.org/?p=197#comments</comments>
		<pubDate>Fri, 02 Jul 2010 09:51:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://splink.org/?p=197</guid>
		<description><![CDATA[Currently I am in the process of starting another actionscript open source project. The plan is to create some sort of UI library/framework which makes the everyday UI programming tasks a more pleasant experience. The main goal is to encourage clean concise and flexible client code which can be easily maintained and changed.
One part of [...]]]></description>
			<content:encoded><![CDATA[<p>Currently I am in the process of starting another actionscript open source project. The plan is to create some sort of UI library/framework which makes the everyday UI programming tasks a more pleasant experience. The main goal is to encourage clean concise and flexible client code which can be easily maintained and changed.</p>
<p>One part of the project is a layout framework. I created a little demo app to test it's current capabilities. <strong>Click the image to launch to demo:<br />
</strong></p>
<p><a href="http://quui.de/layout"><img src="http://splink.org/wp-content/uploads/2010/07/guibuilder-2.gif" alt="guibuilder-2" title="guibuilder-2" width="532" height="306" class="alignnone size-full wp-image-199" /></a></p>
<p><strong>//EDIT:</strong><br />
A friend of mine read this post and complained that it lacks a clear explanation what the demo is about. </p>
<p>Well, the demo's purpose is to test and showcase the current state of a layout framework which I am currently working on. </p>
<p>The 'GuiBuilder' demo enables you to create layouts visually and save/restore them to/from XML. If you start the demo it automatically loads a "default" layout. To explore this layout you can select any cell or container on the stage and change it's values by either dragging it's right and bottom border or by changing it's values in the form on the left side.</p>
<p>You can select any cell or container by either clicking on it, or selecting it with the dropdown box on the right side. The difference between a cell and a container is that a container can contain any number of cells or containers, whereas a cell can't contain anything else. (<a href="https://secure.wikimedia.org/wikipedia/en/wiki/Composite_pattern">Composite pattern</a>)</p>
<p>You can remove any selected cell or container exept for the "Container stage" (Some root must remain). If you remove a container, all cells and containers it contains are also removed. If you select a container you can also add cells or containers to it. If you select a cell you can only change the cell's settings, but not add anything to it. </p>
<p>As containers can hold other containers and cells, containers allow a lot more settings then cells. Select a container and look at it's settings in the left side form. These are the actual features of the layout framework. Any value you change affects the content of the selected container. So you could for instance change the amount of columns, the alignment, and so on. But to see any change, the container needs content. As long as the container doesn't contain cells or containers, nothing happens. But as soon as you start adding cells or containers to the container you will see the settings take effect, because the container's settings are applied to it's content.</p>
<p>If you are finally happy with your result you can click the "Save to clipboard" button and store the resulting XML on your clipboard. The next time you open the 'GuiBuilder' demo just paste the XML into the TextArea on the right side and click restore and your layout will be restored.</p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=197</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using Hudson CI server to build multiple projects with FlexUnit4 tests on a windows box in parallel</title>
		<link>http://splink.org/?p=120</link>
		<comments>http://splink.org/?p=120#comments</comments>
		<pubDate>Tue, 29 Jun 2010 11:21:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://splink.org/?p=120</guid>
		<description><![CDATA[Recently I setup the Hudson CI  server for my splink projects. As Hudson is very well documented and super-easy to use, I had it up and running within less than 5 minutes.
1. Download the latest Hudson.war 
2. Run Hudson "java -jar hudson.jar"
3. Install Hudson as a windows service

My next step was to add build [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I setup the Hudson <a href="http://en.wikipedia.org/wiki/Continuous_integration">CI </a> server for my splink projects. As Hudson is very well documented and super-easy to use, I had it up and running within less than 5 minutes.</p>
<p>1. Download the latest <a href="http://hudson-ci.org/download/war/">Hudson.war </a><br />
2. Run Hudson "java -jar hudson.jar"<br />
3. <a href="http://wiki.hudson-ci.org/display/HUDSON/Installing+Hudson+as+a+Windows+service">Install </a>Hudson as a windows service</p>
<p></p>
<p>My next step was to add build jobs for the splink projects. For each project (<a href="http://code.google.com/p/splinklibrary/">splinklibrary</a>, <a href="http://code.google.com/p/splinkresource/">splinkresource</a> and <a href="http://code.google.com/p/deepsplink/">deepsplink</a> I did</p>
<p>1. Add a "Free Style" job<br />
2. Configure the source code repository (firstly I had to install the <a href="http://wiki.hudson-ci.org/display/HUDSON/Mercurial+Plugin">Hudson Mercurial plugin</a>, but for instance SVN is supported out of the box.<br />
3. Define when to run the job (i.e. every hour, after a commit, after another build, ...)<br />
4. Add ANT scripts and define which tasks are to be run. (i.e. compile, run-tests, package, release, ...)<br />
5. Define what to do after the ANT scripts have been successfully run. (i.e. publish documentation, publish test results, archive releases, ...)<br />
6. Save the job</p>
<p></p>
<p>Now I could click the 'build button' and Hudson successfully built my project. Great!<br />
<strong><br />
But wait,..</strong> </p>
<p>Next I configured the three jobs to run every hour. But almost always one of the jobs failed. After looking at the console output of the failed builds I discovered the problem: </p>
<p>The FlexUnit tasks communicate with the swf which runs the FlexUnit tests over a socket on port 1024. So if two jobs run at a time, they interfere with each other because both jobs try to use port 1024 when they run the FlexUnit tests. </p>
<p>So I needed to assign unique TCP ports to avoid these port collisions and the <a href="http://wiki.hudson-ci.org/display/HUDSON/Port+Allocator+Plugin">Hudson Port Allocator Plug-in</a> seems the best tool for the job. Just <a href="http://localhost:8080/pluginManager/available">install it here</a><br />
With the port allocator in place I could allocate one or more ports for a job. My first solution was to just define port 1024 for each job and be done. Port Allocator then queues all the jobs which use port 1024 instead of running them in parallel. On the upside: No more failed builds. But on the downside the builds take longer, as they can't execute in parallel anymore.<br />
The answer to this was to make the Hudson Port Allocator Plug-in pick a free random port and convey the port to the build script. Because if each job is assigned with it's own port for the FlexUnit socket communication, jobs can't jam each other anymore. </p>
<p><a href="http://splink.org/?attachment_id=144" rel="attachment wp-att-144"><img src="http://splink.org/wp-content/uploads/2010/06/hudson-port-assign.gif" alt="Make Hudson Port Allocator convey a free port to the build script" title="hudson-port-assign" width="540" height="66" class="size-full wp-image-144" /></a></p>
<p>Now I could grab the PORT enviroment variable in my build file and use it to configure the Hudson ANT task. </p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;property</span> <span style="color: #000066;">environment</span>=<span style="color: #ff0000;">&quot;env&quot;</span><span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;condition</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;PORT&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${env.PORT}&quot;</span> <span style="color: #000066;">else</span>=<span style="color: #ff0000;">&quot;1024&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
	<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;isset</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;env.PORT&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/condition<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;flexunit</span>
	<span style="color: #000066;">swf</span>=<span style="color: #ff0000;">&quot;${tests}/TestRunner.swf&quot;</span>
	<span style="color: #000066;">toDir</span>=<span style="color: #ff0000;">&quot;${report}&quot;</span>
	<span style="color: #000066;">haltonfailure</span>=<span style="color: #ff0000;">&quot;false&quot;</span>
	<span style="color: #000066;">headless</span>=<span style="color: #ff0000;">&quot;false&quot;</span>
	<span style="color: #000066;">verbose</span>=<span style="color: #ff0000;">&quot;true&quot;</span>
	<span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;${PORT}&quot;</span>
	<span style="color: #000066;">localTrusted</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/flexunit<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p>But as the FlexUnit <a href="http://docs.flexunit.org/index.php?title=CIListener">CIListener class</a> also needs to know the port, I employed ANT's echo task to write the port number into a file:</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;echo</span> <span style="color: #000066;">file</span>=<span style="color: #ff0000;">&quot;${tests}/port&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>${port}<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/echo<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<pre class="actionscript">&nbsp;
core = <span style="color: #000000; font-weight: bold;">new</span> FlexUnitCore<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
core.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> CIListener<span style="color: #66cc66;">&#40;</span>port<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p>And to get the port inside my TestRunner class I had to just load the "port" file:</p>
<pre class="actionscript">&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> TestRunner<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> loader : QUrlLoader = <span style="color: #000000; font-weight: bold;">new</span> QUrlLoader<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;port&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	loader.<span style="color: #006600;">register</span><span style="color: #66cc66;">&#40;</span>QEvent.<span style="color: #006600;">COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : QEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span>loader.<span style="color: #006600;">getContent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
	loader.<span style="color: #006600;">register</span><span style="color: #66cc66;">&#40;</span>QEvent.<span style="color: #0066CC;">ERROR</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : QEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
	loader.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span>port : uint = <span style="color: #cc66cc;">1024</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	core = <span style="color: #000000; font-weight: bold;">new</span> FlexUnitCore<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	core.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TraceListener<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	core.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> CIListener<span style="color: #66cc66;">&#40;</span>port<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	core.<span style="color: #006600;">run</span><span style="color: #66cc66;">&#40;</span>IntegrationSuite<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>* <em>QUrlLoader is part of the <a href="http://code.google.com/p/splinklibrary/">splinklibrary</a> project.</em></p>
<p>By checking the console output after running a build job I was able to verify that Hudson Port Allocator indeed picked different ports for each job:</p>
<p><a href="http://splink.org/?attachment_id=155" rel="attachment wp-att-155"><img src="http://splink.org/wp-content/uploads/2010/06/hudson-allocating.gif" alt="hudson-allocating" title="hudson-allocating" width="540" height="100" class="alignnone size-full wp-image-155" /></a><br />
<a href="http://splink.org/?attachment_id=162" rel="attachment wp-att-162"><img src="http://splink.org/wp-content/uploads/2010/06/hudson-allocating-2.gif" alt="hudson-allocating-2" title="hudson-allocating-2" width="540" height="200" class="alignnone size-full wp-image-162" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=120</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>googlecode: converting svn to mercurial</title>
		<link>http://splink.org/?p=112</link>
		<comments>http://splink.org/?p=112#comments</comments>
		<pubDate>Sun, 20 Jun 2010 12:27:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://splink.org/?p=112</guid>
		<description><![CDATA[Just converted the splink googlecode repositories from svn to mercurial dvcs. (including the complete commit history) It worked like a charm once I figured that I had to use TortoiseHg's hg.exe to perform the conversion on my windows machine. TortoiseHg includes all neccessary extensions (python+svn bindings) and works out of the box. 
1. Convert the [...]]]></description>
			<content:encoded><![CDATA[<p>Just converted the splink googlecode repositories from svn to mercurial dvcs. (including the complete commit history) It worked like a charm once I figured that I had to use <a href="http://bitbucket.org/tortoisehg/">TortoiseHg's</a> hg.exe to perform the conversion on my windows machine. TortoiseHg includes all neccessary extensions (python+svn bindings) and works out of the box. </p>
<p>1. Convert the library:</p>
<pre class="bash">&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> mylibrary
hg.exe convert http://mylibrary.googlecode.com/svn mylibrary
<span style="color: #7a0874; font-weight: bold;">cd</span> mylibrary
hg.exe push https://mylibrary.googlecode.com/hg
&nbsp;</pre>
<p>2. Convert the wiki:</p>
<pre class="bash">&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> mylibrary-wiki
hg.exe convert http://mylibrary.googlecode.com/svn/wiki mylibrary-wiki
<span style="color: #7a0874; font-weight: bold;">cd</span> mylibrary-wiki
hg.exe push https://wiki.mylibrary.googlecode.com/hg
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=112</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>updates</title>
		<link>http://splink.org/?p=79</link>
		<comments>http://splink.org/?p=79#comments</comments>
		<pubDate>Sun, 14 Feb 2010 00:09:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://splink.org/?p=79</guid>
		<description><![CDATA[1. deepsplink 0.9.0
there are various new IRequestBuilder implementations to provide different page transition orders. Here is a quick configuration excerpt:
&#160;
&#60;pages request=&#34;hide-initshow-finalize&#34;&#62;
&#60;page id=&#34;home&#34; clazz=&#34;Test&#34; /&#62;
&#60;page id=&#34;p1&#34; clazz=&#34;Test&#34; /&#62;
&#60;page id=&#34;p2&#34; clazz=&#34;Test&#34; /&#62;
&#60;page id=&#34;p3&#34; clazz=&#34;Test&#34; request=&#34;init-show-hide-finalize&#34;&#62;
&#60;page id=&#34;p4&#34; clazz=&#34;Test&#34; /&#62;
&#60;page id=&#34;p5&#34; clazz=&#34;Test&#34; /&#62;
&#60;/page&#62;
&#60;/pages&#62;
&#160;
All pages beneath a page whose request attribute has been set are processed by the configured request [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. <a href="http://code.google.com/p/deepsplink">deepsplink 0.9.0</a></strong></p>
<p>there are various new IRequestBuilder implementations to provide different page transition orders. Here is a quick configuration excerpt:</p>
<pre class="xml">&nbsp;
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;pages</span> <span style="color: #000066;">request</span>=<span style="color: #ff0000;">&quot;hide-initshow-finalize&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;home&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;p1&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;p2&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;p3&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="color: #000066;">request</span>=<span style="color: #ff0000;">&quot;init-show-hide-finalize&quot;</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;p4&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;page</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;p5&quot;</span> <span style="color: #000066;">clazz</span>=<span style="color: #ff0000;">&quot;Test&quot;</span> <span style="font-weight: bold; color: black;">/&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/page<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/pages<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre>
<p>All pages beneath a page whose request attribute has been set are processed by the configured request until a page has configured a different IRequestBuilder which then is used to process the pages beneath that page. This mechnism is very flexible and should enable to cover a lot of requirements. However, you can always add your own custom IRequestBuilder implementations if the default ones don't suffice.</p>
<p>The deepsplink configuration data classes now have a 'toXML' method which spits out the configuration xml recursively. </p>
<p>The boot package now provides two default bootstrappers (ExternalConfigBootstrapper, XmlConfigBootstrapper) which should cover most usecases. For special requirements it is quick and easy to write a custom bootstrapper. </p>
<pre class="actionscript">&nbsp;
<span style="color: #000000; font-weight: bold;">new</span> ExternalConfigBootstrapper<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;config.xml&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> BootStrategy<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;</pre>
<p>Finally the framework and sample codebase has been updated to use the latest splinklibrary and splinkresource releases (both 1.1.0)</p>
<p><strong>2. <a href="http://code.google.com/p/splinkresource">splinkresource 1.1.0</a></strong></p>
<p>The configuration data beans now have a 'toXML' method which spits out the configuration xml recursively just like the deepsplink configuration does.<br />
Finally the time had come to change all the explicit to implicit getters because implicit getters are more concise, hide more information from the client (is it a var or a method) and thus allow more changes without affecting client code because of public API changes ;)</p>
<p><strong>3. <a href="http://code.google.com/p/splinklibrary/">splinklibrary 1.1.0</a></strong></p>
<p>As deepsplink makes heavy use of splinklibrarys tree package some things needed improvement:<br />
The TreeUtils class has been removed and it's static methods were shifted to the Tree class which seemed much more compact and suitable. While at it I also added a static convenience methods</p>
<pre class="actionscript">&nbsp;
visit<span style="color: #66cc66;">&#40;</span>node : INode, fnc : <span style="color: #000000; font-weight: bold;">Function</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span>
clone<span style="color: #66cc66;">&#40;</span>node : INode<span style="color: #66cc66;">&#41;</span> : INode
&nbsp;</pre>
<p>Finally, to gain more flexibility for a low level component like a Node I decided to introduce the INode interface and use implicit getters.</p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=79</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>deepsplink 0.8.0 released</title>
		<link>http://splink.org/?p=74</link>
		<comments>http://splink.org/?p=74#comments</comments>
		<pubDate>Mon, 14 Dec 2009 12:15:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://splink.org/?p=74</guid>
		<description><![CDATA[Over the last weeks I put some more work into my actionscript 3 deeplink framework deepsplink. 
In particular I
- simplified the public API
- refactored a lot of the internals
- enhanced comments
- updated the sample application
- wrote a getting started tutorial based on the sample application
If you want to find out how easy it is to [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last weeks I put some more work into my actionscript 3 deeplink framework <a href="http://code.google.com/p/deepsplink/">deepsplink</a>. </p>
<p>In particular I</p>
<p>- simplified the public API<br />
- refactored a lot of the internals<br />
- enhanced comments<br />
- updated the sample application<br />
- wrote a getting started tutorial based on the sample application</p>
<p>If you want to find out how easy it is to create a flash application with full deeplink support, asynchronous page transitions and a modular and loosely coupled application design, then check out the <a href="http://code.google.com/p/deepsplink/wiki/GettingStarted">getting started tutorial</a></p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=74</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deepsplink update</title>
		<link>http://splink.org/?p=57</link>
		<comments>http://splink.org/?p=57#comments</comments>
		<pubDate>Sat, 14 Nov 2009 15:47:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://splink.org/?p=57</guid>
		<description><![CDATA[deepsplink 0.7.0 released
]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/deepsplink/" target="_blank">deepsplink 0.7.0</a> released</p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=57</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updates</title>
		<link>http://splink.org/?p=50</link>
		<comments>http://splink.org/?p=50#comments</comments>
		<pubDate>Thu, 15 Oct 2009 15:29:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://splink.org/?p=50</guid>
		<description><![CDATA[i published updates for my libraries:
deepsplink 0.6.0
- several enhancements including better page stacking, page parameters and performance
splinklibrary 1.0.2 
- fixed memory leak in QTween
splinkresource 1.0.1
- fixed bug which prevented the ResourceProcessor to ever complete processing, but the bug only occurred when loading assets
- added convenience method getAssetById(id : String) : DisplayObject, which directly instantiates the [...]]]></description>
			<content:encoded><![CDATA[<p>i published updates for my libraries:</p>
<p><a href="http://code.google.com/p/deepsplink/" target="_blank"><strong>deepsplink 0.6.0</strong></a></p>
<p>- several enhancements including better page stacking, page parameters and performance</p>
<p><a href="http://code.google.com/p/splinklibrary/" target="_blank"><strong>splinklibrary 1.0.2 </strong></a></p>
<p>- fixed memory leak in QTween</p>
<p><a href="http://code.google.com/p/splinkresource/" target="_blank"><strong>splinkresource 1.0.1</strong></a></p>
<p>- fixed bug which prevented the ResourceProcessor to ever complete processing, but the bug only occurred when loading assets</p>
<p>- added convenience method getAssetById(id : String) : DisplayObject, which directly instantiates the requested asset instead of just returning it's class like getAssetClassById does.</p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=50</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>deepsplink released</title>
		<link>http://splink.org/?p=46</link>
		<comments>http://splink.org/?p=46#comments</comments>
		<pubDate>Wed, 27 May 2009 14:19:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://splink.org/?p=46</guid>
		<description><![CDATA[I'm proud to anounce the release of deepsplink, an actionscript 3 deeplinking framework. deepsplink provides a clear, flexible and easy to use api to build a scalable actionscript 3 application very quickly.
The source code, the api documentation and a simple demo application which showcases the main features can be found at googlecode
]]></description>
			<content:encoded><![CDATA[<p>I'm proud to anounce the release of deepsplink, an actionscript 3 deeplinking framework. deepsplink provides a clear, flexible and easy to use api to build a scalable actionscript 3 application very quickly.<br />
The source code, the api documentation and a simple demo application which showcases the main features can be found at <a href="http://code.google.com/p/deepsplink" target="_blank">googlecode</a></p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=46</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>splinklibrary &amp; splinkresource updates</title>
		<link>http://splink.org/?p=42</link>
		<comments>http://splink.org/?p=42#comments</comments>
		<pubDate>Tue, 26 May 2009 10:42:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://splink.org/?p=42</guid>
		<description><![CDATA[I just released new versions of splinklibrary and splinkresource. The version number is now 1.0.0 as both projects are pretty stable and have been used in a number of projects. The splinklibrary classes are now covered by unit tests.
I also improved the public api's of the queue (which is now even more powerful and easy [...]]]></description>
			<content:encoded><![CDATA[<p>I just released new versions of splinklibrary and splinkresource. The version number is now 1.0.0 as both projects are pretty stable and have been used in a number of projects. The splinklibrary classes are now covered by unit tests.</p>
<p>I also improved the public api's of the queue (which is now even more powerful and easy to use), the tween engine (which runs a bit faster and is now much more convenient to use) and the shape package.</p>
<p>Because of the changes to the public api, splinklibrary is not backward compatible as previous versions were, which is the main reason for the splinkresource update (no new features there).</p>
<p>You can access the new versions here:</p>
<p><a href="http://code.google.com/p/splinklibrary/" target="_blank">splinklibrary</a><br />
<a href="http://code.google.com/p/splinkresource/" target="_blank">splinkresource</a></p>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>splinklibrary feature demo</title>
		<link>http://splink.org/?p=39</link>
		<comments>http://splink.org/?p=39#comments</comments>
		<pubDate>Sat, 18 Oct 2008 18:22:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://splink.org/?p=39</guid>
		<description><![CDATA[here is a quick demo class showcasing a few splinklibrary features. Please note that this example focuses on showing some splinklibrary features and it is not considered to be a best practice approach for loading and tweening an image. Also note that the demo is just a teaser, splinklibrary has a lot more useful concepts [...]]]></description>
			<content:encoded><![CDATA[<p>here is a quick demo class showcasing a few splinklibrary features. Please note that this example focuses on showing some splinklibrary features and it is not considered to be a best practice approach for loading and tweening an image. Also note that the demo is just a teaser, splinklibrary has a lot more useful concepts to offer. I recommend you to checkout the <a href="http://code.google.com/p/splinklibrary/source/checkout" target="_blank">source </a> and see for yourself.</p>
<pre class="actionscript">&nbsp;
package
<span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">loading</span>.<span style="color: #006600;">QLoader</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">loading</span>.<span style="color: #006600;">QUrlLoader</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">ILogger</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">ILoggerFactory</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">LogLevel</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">LogRange</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">LoggerFactory</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">LoggerProvider</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">logoutput</span>.<span style="color: #006600;">DefaultOutputFormatter</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">logoutput</span>.<span style="color: #006600;">FirebugOutput</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">logging</span>.<span style="color: #006600;">logoutput</span>.<span style="color: #006600;">QLogOutput</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">queue</span>.<span style="color: #006600;">Queue</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">queue</span>.<span style="color: #006600;">QueueEvent</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">queue</span>.<span style="color: #006600;">QueueResultProvider</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">queue</span>.<span style="color: #006600;">ResultQueue</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">TweenAction</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">TweenPool</span>;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">splink</span>.<span style="color: #006600;">library</span>.<span style="color: #006600;">tween</span>.<span style="color: #006600;">sprop</span>.<span style="color: #006600;">FilterProp</span>;
&nbsp;
<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">effects</span>.<span style="color: #006600;">easing</span>.<span style="color: #006600;">Sine</span>;
&nbsp;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObject</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">BlurFilter</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">URLLoaderDataFormat</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">URLRequest</span>;
<span style="color: #808080; font-style: italic;">/**
 * This class demos the usage of some of the splinklibrary classes.
 *
 * @author Max Kugland
 */</span>
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Demo <span style="color: #0066CC;">extends</span> Sprite
<span style="color: #66cc66;">&#123;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _logger:ILogger;
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Configure the logger once for the project
 */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> configureLogger<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// we need an ILoggerFactory, which will create our ILogger instances</span>
	<span style="color: #000000; font-weight: bold;">var</span> factory:ILoggerFactory = <span style="color: #000000; font-weight: bold;">new</span> LoggerFactory<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// set a factory id</span>
	factory.<span style="color: #006600;">setId</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;demo&quot;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// set the range of LogLevels which will be logged</span>
	factory.<span style="color: #006600;">setRange</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> LogRange<span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #0066CC;">TRACE</span>, LogLevel.<span style="color: #006600;">FATAL</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// set an IOutputFormatter to format our logmessages</span>
	factory.<span style="color: #006600;">setOuputFormatter</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> DefaultOutputFormatter<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;demo-app&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// add ILogOuputs which will send the logs to their destination,</span>
	<span style="color: #808080; font-style: italic;">// in this case we let the logs appear in QLog and in Firebug</span>
	factory.<span style="color: #006600;">addLogOutput</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> QLogOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	factory.<span style="color: #006600;">addLogOutput</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> FirebugOutput<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// add the factory to the LoggerProvider</span>
	LoggerProvider.<span style="color: #006600;">addLoggerFactory</span><span style="color: #66cc66;">&#40;</span>factory<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// get an ILogger from the LoggerProvider using the ILoggerFactory</span>
	<span style="color: #808080; font-style: italic;">// with the id &quot;demo&quot;</span>
	_logger = LoggerProvider.<span style="color: #006600;">getLogger</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;demo&quot;</span>, Demo<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Demo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	configureLogger<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// log a message with the LogLevel INFO, as INFO is within the</span>
	<span style="color: #808080; font-style: italic;">// specified LogRange, the message will get logged</span>
	_logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #006600;">INFO</span>, <span style="color: #ff0000;">&quot;starting Demo&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Create a ResultQueue and register listeners for error and</span>
	<span style="color: #808080; font-style: italic;">// completion events as ResultQueue is capable of distributing</span>
	<span style="color: #808080; font-style: italic;">// events because it extends Distributor</span>
	<span style="color: #000000; font-weight: bold;">var</span> queue:ResultQueue = <span style="color: #000000; font-weight: bold;">new</span> ResultQueue;
	queue.<span style="color: #006600;">register</span><span style="color: #66cc66;">&#40;</span>QueueEvent.<span style="color: #006600;">ON_COMPLETE</span>, onComplete<span style="color: #66cc66;">&#41;</span>;
	queue.<span style="color: #006600;">register</span><span style="color: #66cc66;">&#40;</span>QueueEvent.<span style="color: #006600;">ON_ERROR</span>, onError<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// add a loader to the queue which loads xml and assign it an id</span>
	<span style="color: #808080; font-style: italic;">//(feedResult)</span>
	queue.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> QUrlLoader<span style="color: #66cc66;">&#40;</span>
	<span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://splink.org/?feed=rss2&quot;</span><span style="color: #66cc66;">&#41;</span>,
	URLLoaderDataFormat.<span style="color: #0066CC;">TEXT</span>, <span style="color: #ff0000;">&quot;feedResult&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// add a loader to the queue which loads an image and register a</span>
	<span style="color: #808080; font-style: italic;">// listener for its completion event, also pass the queue instance</span>
	<span style="color: #808080; font-style: italic;">// (q) to enable it's usage within the method which is called on</span>
	<span style="color: #808080; font-style: italic;">// it's completion, (QLoader also extends Distributor and therefore</span>
	<span style="color: #808080; font-style: italic;">// can fire events)</span>
	queue.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> QLoader<span style="color: #66cc66;">&#40;</span>
	<span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span>
	<span style="color: #ff0000;">&quot;http://splink.org/wp-content/themes/splink/img/header.jpg&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.
	<span style="color: #006600;">register</span><span style="color: #66cc66;">&#40;</span>QueueEvent.<span style="color: #006600;">ON_COMPLETE</span>, onImage, queue<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// start the queue</span>
	queue.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Called when the image loader completes
 *
 * @param e the event sent by the image loader
 * @param q an optional object, in this case the queue
 */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onImage<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:QueueEvent, q:Queue<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// unregister from the event source (the image loader)</span>
	<span style="color: #0066CC;">e</span>.<span style="color: #006600;">getSource</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">unregister</span><span style="color: #66cc66;">&#40;</span>QueueEvent.<span style="color: #006600;">ON_COMPLETE</span>, onImage<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// cast the event source (IDistributor) to QLoader</span>
	<span style="color: #000000; font-weight: bold;">var</span> loader:QLoader = <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">getSource</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> as QLoader<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// add the loaded image data to the stage, and set it's alpha</span>
	<span style="color: #808080; font-style: italic;">// value to 0</span>
	<span style="color: #000000; font-weight: bold;">var</span> bmp:DisplayObject = loader.<span style="color: #006600;">getContent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>bmp<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">alpha</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
	_logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #0066CC;">TRACE</span>, <span style="color: #ff0000;">&quot;image present: &quot;</span> + bmp<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// create a bitmapfilter which is used for tweening</span>
	<span style="color: #000000; font-weight: bold;">var</span> fprop:ISpecialProp = <span style="color: #000000; font-weight: bold;">new</span> FilterProp<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BlurFilter<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// create a TweenPool and add some TweenActions targeting the</span>
	<span style="color: #808080; font-style: italic;">// loaded image (bmp). tween the alpha from it's current value</span>
	<span style="color: #808080; font-style: italic;">// (0) to 1 and tween the blurX  and blurY properties of the image</span>
	<span style="color: #808080; font-style: italic;">// from 100 to 0</span>
	<span style="color: #000000; font-weight: bold;">var</span> t:TweenPool = <span style="color: #000000; font-weight: bold;">new</span> TweenPool;
	t.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TweenAction<span style="color: #66cc66;">&#40;</span>bmp, Sine.<span style="color: #006600;">easeOut</span>, <span style="color: #cc66cc;">500</span>,
	TweenAction.<span style="color: #006600;">ALPHA</span>, bmp.<span style="color: #006600;">alpha</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	t.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TweenAction<span style="color: #66cc66;">&#40;</span>bmp, Sine.<span style="color: #006600;">easeOut</span>, <span style="color: #cc66cc;">500</span>,
	TweenAction.<span style="color: #006600;">BLUR_X</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, fprop<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	t.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TweenAction<span style="color: #66cc66;">&#40;</span>bmp, Sine.<span style="color: #006600;">easeOut</span>, <span style="color: #cc66cc;">500</span>,
	TweenAction.<span style="color: #006600;">BLUR_Y</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, fprop<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// add the TweenPool to the end of the queue</span>
	q.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>t<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * If one of the queued operations fails, we get notified here
 */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onError<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:QueueEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	_logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #0066CC;">ERROR</span>, <span style="color: #ff0000;">&quot;Demo error &quot;</span> + <span style="color: #0066CC;">e</span>.<span style="color: #006600;">getErrorMessage</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * As the queue continues even if a queued operation fails onComplete
 * gets called in any case.
 */</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onComplete<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:QueueEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// as we used a ResultQueue we can retrieve a QueueResultProvider</span>
	<span style="color: #808080; font-style: italic;">// which carries the results of the IResultQueueable items within</span>
	<span style="color: #808080; font-style: italic;">// the ResultQueue. Note that the TweenPool is not an</span>
	<span style="color: #808080; font-style: italic;">// IResultQueueable but an IQueueable, as it doesn't compute any</span>
	<span style="color: #808080; font-style: italic;">// results, so the QueueResultProvider only holds the  results of</span>
	<span style="color: #808080; font-style: italic;">// both loaders (the image loader and the xml loader)</span>
	<span style="color: #000000; font-weight: bold;">var</span> p:QueueResultProvider =
	<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">getSource</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> as ResultQueue<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getResultProvider</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// here we retrieve the result with the id &quot;feedResult&quot; from the</span>
	<span style="color: #808080; font-style: italic;">// QueueResultProvider and as we know its content is xml we cast</span>
	<span style="color: #808080; font-style: italic;">// it to xml</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">xml</span>:<span style="color: #0066CC;">XML</span> = <span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#40;</span>p.<span style="color: #006600;">getResultById</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;feedResult&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getResult</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// we log the title of the loaded xml document which is a rss feed</span>
	<span style="color: #808080; font-style: italic;">// at the TRACE LogLevel and ouput that the demo is complete at</span>
	<span style="color: #808080; font-style: italic;">//INFO level</span>
	_logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #0066CC;">TRACE</span>, <span style="color: #ff0000;">&quot;xml feed title: &quot;</span>+<span style="color: #0066CC;">xml</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;channel&quot;</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">title</span><span style="color: #66cc66;">&#41;</span>;
	_logger.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>LogLevel.<span style="color: #006600;">INFO</span>, <span style="color: #ff0000;">&quot;Demo complete.&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Eventually we invoke finalize on the event source which results</span>
	<span style="color: #808080; font-style: italic;">// in removement of all the registred listeners</span>
	<span style="color: #0066CC;">e</span>.<span style="color: #006600;">getSource</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">finalize</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://splink.org/?feed=rss2&amp;p=39</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
