<?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>MikeCann.co.uk &#187; Projects - MikeCann.co.uk - mikey see, mikey do!</title>
	<atom:link href="http://mikecann.co.uk/tag/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikecann.co.uk</link>
	<description>mikey see, mikey do!</description>
	<lastBuildDate>Sat, 28 Jan 2012 13:10:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>SWFt &#8211; Dependency Injection Component Based Game Framework</title>
		<link>http://mikecann.co.uk/personal-project/swft-dependency-injection-component-based-game-framework/</link>
		<comments>http://mikecann.co.uk/personal-project/swft-dependency-injection-component-based-game-framework/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 16:22:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SWFt]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FlashPunk]]></category>
		<category><![CDATA[Flixel]]></category>
		<category><![CDATA[framwork]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[IoC]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[pbe]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://mikecann.co.uk/?p=1081</guid>
		<description><![CDATA[This is my first post of what I suspect will be many on the subject of SWFt. What is SWFt I hear you cry? Well in a nut shell SWFt is an Entity-Component based game framework powered by Dependency Injection. Still confused? Well basically its a really nice neat method for making flash games. Still [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/06/swft10-1.png"><img class="alignnone size-medium wp-image-1083" title="swft10 (1)" src="http://mikecann.co.uk/wp-content/uploads/2010/06/swft10-1-300x167.png" alt="" width="300" height="167" /></a></p>
<p>This is my first post of what I suspect will be many on the subject of SWFt.</p>
<p>What is SWFt I hear you cry? Well in a nut shell SWFt is an Entity-Component based game framework powered by Dependency Injection. Still confused? Well basically its a really nice neat method for making flash games. Still interested? Read on!</p>
<p><span id="more-1081"></span></p>
<p>First the history, if you arent interested in this then just skip on down to &#8220;What exactly is it?&#8221;</p>
<p><strong>History</strong></p>
<p>It started off as an idea I had while playing around with some RobotLegs code. For those not in the know, <a href="http://www.robotlegs.org/">RobotLegs </a> (RL) is an awsome Inversion of Control (IoC) or Dependency Injection (DI) MVCS framework for making Rich Internet Applications (I wrote a post on it <a href="http://mikecann.co.uk/programming/on-the-bleeding-edge/">here</a>). IoC and DI were new concepts to me and I was fascinated and excited by the power that they had especially when couppled with something like <a href="http://github.com/robertpenner/as3-signals">AS3 Signals</a>.</p>
<p>At the time of this discovery I was working on a game that used <a href="http://pushbuttonengine.com/">Push Button Engine</a> (PBE) and <a href="http://mate.asfusion.com/">Mate </a>as the basis for development. Feeling dissatisfied with PBE and Mate I wondered if there was a way I could take all the cool things I was playing around with RobotLegs and apply them to some of the cool aspects of PBE.</p>
<p>The first thing I did was to check to see if anyone else has had the idea of using DI in a component based game engine. It looked like it hasnt been done in AS3 but it looks like it has already been thought about and documented in Java. There has been a paper written about it here: <a href="http://portal.acm.org/citation.cfm?id=1658866.1658872" target="_blank">http://portal.acm.org/citation.cfm?id=1658866.1658872</a>, I managed to get my greasy mitts on it and enjoyed the read however I think there was definitely room for improvement in AS3.</p>
<p>The next thing was to seek advice on whether it could even be done in RL. I decided that I should go straight to the source and I emailed one of the contributors to the RL project, Stray. It turns out stray is a very nice lady who is also from the north of the UK. She had some good words of advice but she recommendation that I repost my question to the RL mailing list where the other contributors to the project tend to lurk.</p>
<p>So I wrote up my query<a href="http://groups.google.com/group/robotlegs/browse_thread/thread/f7e325c5caf14d93"> and posted it</a>. I added in some diagrams of how I thought it may look:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/06/Relationships-1.png"><img class="alignnone size-medium wp-image-1085" title="Relationships 1" src="http://mikecann.co.uk/wp-content/uploads/2010/06/Relationships-1-300x259.png" alt="" width="300" height="259" /></a><a href="http://mikecann.co.uk/wp-content/uploads/2010/06/Example-1.png"><img class="alignnone size-medium wp-image-1086" title="Example 1" src="http://mikecann.co.uk/wp-content/uploads/2010/06/Example-1-300x161.png" alt="" width="300" height="161" /></a></p>
<p>To cut a long story short, after <a href="http://groups.google.com/group/robotlegs/browse_thread/thread/4833ba99cd12b25a">several months</a> of <a href="http://groups.google.com/group/robotlegs/browse_thread/thread/4d3eb6d8f8dd64bc#">posts</a> back and forth with many excellent suggestions and contributions I felt it was time that the project migrated to its own home as not spam up the RL list too much. As such <a href="http://groups.google.com/group/swft-framework">SWft &#8211; Game Framework</a> mailing list was born! Its still very new and as such there arent many posts yet but I hope for that to grow as the project progresses.</p>
<p>We also have a website: <a href="http://www.swft.co.uk">http://www.swft.co.uk</a> but its meerly a holding page for now.</p>
<p><strong>What exactly is it?</strong></p>
<p>Okay so I promised I would talk about what SWFt actually is. Well without going into too much detail (more posts will follow that will flesh out examples etc) SWFt lets you make AS3 Flash games in a modular component based fashion like you do with <a href="http://pushbuttonengine.com/">Push Button Engine</a> but it lets you keep the strict-type, compile-time checked game structure like you may find in <a href="http://flixel.org/">Flixel </a>or <a href="http://flashpunk.net/">Flash Punk</a>.</p>
<p>Its still very alpha and has alot more work left to do on it but you can follow progress on our GitHub page here: <a href="http://github.com/mikecann/Swft">http://github.com/mikecann/Swft</a> and some examples can also be found here: <a href="http://github.com/mikecann/Swift-Examples">http://github.com/mikecann/Swift-Examples</a> (the red-blue circle experiment is currently broken)</p>
<p>As I say, its still very early days, but I have been wanting to blog about it for a while as its a very exciting project im currently working on <img src='http://mikecann.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Contributions</strong></p>
<p>If you are interested in contributing code or thoughts or anything then shoot a message on the mailing list: <a href="http://groups.google.com/group/swft-framework">http://groups.google.com/group/swft-framework</a></p>
<p>Expect more posts in the coming weeks!</p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-project/swft-dependency-injection-component-based-game-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artificial &#8211; Harmonics (Part 3)</title>
		<link>http://mikecann.co.uk/audio/artificial-harmonics-part-3/</link>
		<comments>http://mikecann.co.uk/audio/artificial-harmonics-part-3/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 15:14:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Personal Mixes]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Chill]]></category>
		<category><![CDATA[Downtempo]]></category>
		<category><![CDATA[Mixes]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=1050</guid>
		<description><![CDATA[Well its been a while since I have made a new mix, but I have been collecting tracks for it for a while. This one came together fairly quickly actually, about two days worth of composition and then a few variations until I was happy with it. I decided not to add any movie samples [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/04/ArtificialHarmonics3.png"><img class="alignnone size-full wp-image-1051" title="ArtificialHarmonics3" src="http://mikecann.co.uk/wp-content/uploads/2010/04/ArtificialHarmonics3.png" alt="" width="500" height="500" /></a></p>
<p>Well its been a while since I have made a new mix, but I have been collecting tracks for it for a while. This one came together fairly quickly actually, about two days worth of composition and then a few variations until I was happy with it. I decided not to add any movie samples to this one to keep it nice and simple, got alot of other projects on at the moment! Im not even sure if people actually like those movie samples tho, let me know if you do!</p>
<p>I have called it Harmonics (Part 3) as the third instalment in my Harmonics series is long overdue and I felt that it just kinda felt like a Harmonics Mix.</p>
<p>Anyways, I have uploaded the mix to SoundCloud and used the last remaining hour that the free account gives you <img src='http://mikecann.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Give it a listen or download below:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="81" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fmike-cann%2Fartificial-harmonics-part-3" /><embed type="application/x-shockwave-flash" width="100%" height="81" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fsoundcloud.com%2Fmike-cann%2Fartificial-harmonics-part-3" allowscriptaccess="always"></embed></object> <span><a href="http://soundcloud.com/mike-cann/artificial-harmonics-part-3">Artificial &#8211; Harmonics ( Part 3 )</a> by <a href="http://soundcloud.com/mike-cann">mike.cann</a></span></p>
<p>The tracklist is as follows:</p>
<div id="_mcePaste">1. Hybrid &#8211; Disappear Here (Armchair Mix)</div>
<div id="_mcePaste">2. Trifonic &#8211; Broken (Specter Mix)</div>
<div id="_mcePaste">3. Canvas &#8211; Imogen Heap</div>
<div id="_mcePaste">4. Chris Zippel &#8211; Again feat. Adel Tawil</div>
<div id="_mcePaste">5. Obscure Celebrities &#8211; Farenheit (Ulrich Scnnauss Remix)</div>
<div id="_mcePaste">6. Woven &#8211; Prickly Pear</div>
<div id="_mcePaste">7. Moderat &#8211; Rusty Nails</div>
<div id="_mcePaste">8. Helios &#8211; Bounce Dive</div>
<div id="_mcePaste">9. Telepopmusik &#8211; Into Everything</div>
<div id="_mcePaste">10. Bjork &#8211; An Echo, A Stain</div>
<div id="_mcePaste">11. Telefon Tel Aviv &#8211; What it was Will Never Again</div>
<div id="_mcePaste">12. Max Richter &#8211; Vladimir&#8217;s Blues</div>
<div id="_mcePaste">13. Sigur Ros &#8211; Hoppipollo</div>
<p>If you liked this mix and havent heard my other ones then you can grab those here: <a href="http://www.mikecann.co.uk/misc/sound-cloud-previous-mixes/">http://www.mikecann.co.uk/misc/sound-cloud-previous-mixes/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/audio/artificial-harmonics-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scribble v0.1 &#8230; Harmony, but in Flash.. kinda!</title>
		<link>http://mikecann.co.uk/art/scribble-v0-1-harmony-but-in-flash-kinda/</link>
		<comments>http://mikecann.co.uk/art/scribble-v0-1-harmony-but-in-flash-kinda/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:00:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Harmony]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=973</guid>
		<description><![CDATA[Well as you can probably tell from my last few posts, I have been loving the simple browser drawing app called Harmony. Well, while playing with it I thought to myself, &#8220;Is there a reason this cant be done in Flash?&#8221;. Well this is the answer to my question. I have called it Scribble and [...]]]></description>
			<content:encoded><![CDATA[<p>Well as you can probably tell from my <a href="http://www.mikecann.co.uk/art/harmony-html5-procedural-drawing/">last</a> few <a href="http://www.mikecann.co.uk/art/more-harmony-creations/">posts</a>, I have been loving the simple browser drawing app called <a href="http://mrdoob.com/projects/harmony/">Harmony</a>. Well, while playing with it I thought to myself, &#8220;Is there a reason this cant be done in Flash?&#8221;. Well this is the answer to my question.</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_03-Mar.-25-18.47.gif"><img class="alignnone size-full wp-image-974" title="ScreenHunter_03 Mar. 25 18.47" src="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_03-Mar.-25-18.47.gif" alt="" width="700" height="392" /></a></p>
<p>I have called it Scribble and its very basic at the moment, not containing even many of the simple features in Harmony, I do however intend to keep adding to it. So over the course of several weeks I hope to add bit by bit till it becomes a fun little place to Scribble!</p>
<p>Anyways, you can check out the current state of the thing here &#8211;&gt; <a href="http://www.mikecann.co.uk/flash/Scribble_v0-1/Scribble.html">http://www.mikecann.co.uk/flash/Scribble_v0-1/Scribble.html</a></p>
<p>Splendid!</p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/art/scribble-v0-1-harmony-but-in-flash-kinda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 Taskbar Monitor</title>
		<link>http://mikecann.co.uk/personal-projects/windows-7-taskbar-monitor/</link>
		<comments>http://mikecann.co.uk/personal-projects/windows-7-taskbar-monitor/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 22:26:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Taskbar]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=949</guid>
		<description><![CDATA[Well this will learn me! A while back, I had an idea for a very simple application that would sit in your taskbar and give you at-a-glance performance info about your system, similar to iStat Pro for OSX. This weekend I finally had time to clean up the code up for release. The problem is that while looking for [...]]]></description>
			<content:encoded><![CDATA[<p>Well this will learn me!</p>
<p>A while back, I had an idea for a very simple application that would sit in your taskbar and give you at-a-glance performance info about your system, similar to<a href="http://www.islayer.com/apps/istatpro/"> iStat Pro for OSX</a>. This weekend I finally had time to clean up the code up for release.</p>
<p>The problem is that while looking for a couple of images for the app I happened to stumble across <a href="http://taskbarmeters.codeplex.com/">Taskbar Meters</a>, which is pretty much the exact same idea I had. Looks like he has made a better job out of it that me too <img src='http://mikecann.co.uk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Ah well, I have decided to release my version of the app nonetheless:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_02-Mar.-14-21.45.gif"><img class="alignnone size-full wp-image-950" title="ScreenHunter_02 Mar. 14 21.45" src="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_02-Mar.-14-21.45.gif" alt="" width="254" height="420" /></a></p>
<p>You can open the app multiple times and set each one to monitor a different value:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_03-Mar.-14-21.46.gif"><img class="alignnone size-full wp-image-951" title="ScreenHunter_03 Mar. 14 21.46" src="http://mikecann.co.uk/wp-content/uploads/2010/03/ScreenHunter_03-Mar.-14-21.46.gif" alt="" width="502" height="47" /></a></p>
<p>I have also decided to post the source up on google code: <a href="http://code.google.com/p/win7-taskbar-mon/">http://code.google.com/p/win7-taskbar-mon/</a></p>
<p>Anyways you can grab version 0.1 here: <a href="http://win7-taskbar-mon.googlecode.com/files/Windows7_Taskbar_Monitor_v0.1.zip">http://win7-taskbar-mon.googlecode.com/files/Windows7_Taskbar_Monitor_v0.1.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/windows-7-taskbar-monitor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Resizeable Chromeless Window AIR</title>
		<link>http://mikecann.co.uk/personal-projects/resizeable-chromeless-window-air/</link>
		<comments>http://mikecann.co.uk/personal-projects/resizeable-chromeless-window-air/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 23:06:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MXML]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Resize]]></category>
		<category><![CDATA[Source]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=917</guid>
		<description><![CDATA[Thought I would share this little ditty. Been working in AIR recently and decided to make the window &#8220;chromeless&#8221; which means there are no controls so no resizing. Thankfully however adobe provide the tools to allow for resizing the native window. So I produced this little mxml component to let you resize the window: The coloured edges indicate where [...]]]></description>
			<content:encoded><![CDATA[<p>Thought I would share this little ditty. Been working in AIR recently and decided to make the window &#8220;chromeless&#8221; which means there are no controls so no resizing.</p>
<p>Thankfully however adobe provide the tools to allow for resizing the native window. So I produced this little mxml component to let you resize the window:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/02/ScreenHunter_02-Feb.-21-21.40.gif"><img class="alignnone size-full wp-image-923" title="ScreenHunter_02 Feb. 21 21.40" src="http://mikecann.co.uk/wp-content/uploads/2010/02/ScreenHunter_02-Feb.-21-21.40.gif" alt="" width="669" height="425" /></a></p>
<p>The coloured edges indicate where the application is draggable, including the white corner areas.</p>
<p>The component that lets you do this is pretty simple:</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="mxml" style="font-family:monospace;"><span class="sc3">&lt;?xml version=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span>?<span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Group</span> xmlns:fx=<span class="st0">&quot;http://ns.adobe.com/mxml/2009&quot;</span></span>
<span class="sc3">xmlns:s=<span class="st0">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span class="sc3">xmlns:mx=<span class="st0">&quot;library://ns.adobe.com/flex/halo&quot;</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;fx:Script</span><span class="re2">&gt;</span></span>
<span class="sc3">&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span></span>
<span class="sc3">import flash.display.NativeWindowResize;</span>
<span class="sc3">import flash.events.MouseEvent;</span>
&nbsp;
<span class="sc3">import mx.managers.CursorManager;</span>
<span class="sc3">public static const RESIZE_AREA : int = <span class="nu0">10</span>;</span>
&nbsp;
<span class="sc3">protected function onRollOver<span class="br0">&#40;</span>event:MouseEvent<span class="br0">&#41;</span>:void</span>
<span class="sc3"><span class="br0">&#123;</span></span>
<span class="sc3"><span class="br0">&#125;</span></span>
&nbsp;
<span class="sc3">protected function onRollOut<span class="br0">&#40;</span>event:MouseEvent<span class="br0">&#41;</span>:void</span>
<span class="sc3"><span class="br0">&#123;</span></span>
<span class="sc3"><span class="br0">&#125;</span></span>
&nbsp;
<span class="sc3">protected function onMouseDown<span class="br0">&#40;</span>event:MouseEvent<span class="br0">&#41;</span>:void</span>
<span class="sc3"><span class="br0">&#123;</span></span>
<span class="sc3">var grp : Group = event.target as Group;</span>
<span class="sc3">var resizeFrom:String = <span class="st0">&quot;&quot;</span>;</span>
&nbsp;
<span class="sc3">if <span class="br0">&#40;</span>grp==topSide<span class="br0">&#41;</span><span class="br0">&#123;</span> resizeFrom=NativeWindowResize.TOP;	<span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==rightSide<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.RIGHT; <span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==bottomSide<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.BOTTOM; <span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==leftSide<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.LEFT;	<span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==topLeft<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.TOP_LEFT;	<span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==topRight<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.TOP_RIGHT;	<span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==bottomRight<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.BOTTOM_RIGHT;	<span class="br0">&#125;</span></span>
<span class="sc3">else if <span class="br0">&#40;</span>grp==bottomLeft<span class="br0">&#41;</span> <span class="br0">&#123;</span> resizeFrom=NativeWindowResize.BOTTOM_LEFT;	<span class="br0">&#125;</span></span>
<span class="sc3">else <span class="br0">&#123;</span> return; <span class="br0">&#125;</span></span>
&nbsp;
<span class="sc3">stage.nativeWindow.startResize<span class="br0">&#40;</span>resizeFrom<span class="br0">&#41;</span>;</span>
<span class="sc3"><span class="br0">&#125;</span></span>
&nbsp;
<span class="sc3"><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/fx:Script</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;topSide&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;0&quot;</span> y=<span class="st0">&quot;0&quot;</span> width=<span class="st0">&quot;{width}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0xFF0000&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;rightSide&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;{width-RESIZE_AREA}&quot;</span> y=<span class="st0">&quot;0&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{height}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0x00FF00&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;bottomSide&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;0&quot;</span> y=<span class="st0">&quot;{height-RESIZE_AREA}&quot;</span> width=<span class="st0">&quot;{width}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0x0000FF&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;leftSide&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;0&quot;</span> y=<span class="st0">&quot;0&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{height}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0x000000&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;topLeft&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;0&quot;</span> y=<span class="st0">&quot;0&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0xffffff&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;topRight&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;{width-RESIZE_AREA}&quot;</span> y=<span class="st0">&quot;0&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0xffffff&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;bottomRight&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;{width-RESIZE_AREA}&quot;</span> y=<span class="st0">&quot;{height-RESIZE_AREA}&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0xffffff&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;s:Group</span> id=<span class="st0">&quot;bottomLeft&quot;</span> rollOver=<span class="st0">&quot;onRollOver(event)&quot;</span> rollOut=<span class="st0">&quot;onRollOut(event)&quot;</span> mouseDown=<span class="st0">&quot;onMouseDown(event)&quot;</span></span>
<span class="sc3">x=<span class="st0">&quot;0&quot;</span> y=<span class="st0">&quot;{height-RESIZE_AREA}&quot;</span> width=<span class="st0">&quot;{RESIZE_AREA}&quot;</span> height=<span class="st0">&quot;{RESIZE_AREA}&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:Rect</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SolidColor</span> color=<span class="st0">&quot;0xffffff&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:fill</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Rect</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;/s:Group</span><span class="re2">&gt;</span></span></pre></div></div>
<p>To use it in your app just add the component into your existing view somewhere:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="mxml" style="font-family:monospace;"><span class="sc3">&lt;?xml version=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span>?<span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;s:SkinnableContainer</span> xmlns:fx=<span class="st0">&quot;http://ns.adobe.com/mxml/2009&quot;</span> xmlns:s=<span class="st0">&quot;library://ns.adobe.com/flex/spark&quot;</span> xmlns:mx=<span class="st0">&quot;library://ns.adobe.com/flex/halo&quot;</span><span class="re2">&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;components:WindowResizer</span> width=<span class="st0">&quot;{width}&quot;</span> height=<span class="st0">&quot;{height}&quot;</span> alpha=<span class="st0">&quot;0&quot;</span> buttonMode=<span class="st0">&quot;true&quot;</span> <span class="re2">/&gt;</span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;/s:SkinnableContainer</span><span class="re2">&gt;</span></span></pre></div></div>
<p>Setting the alpha to zero will obviously hide the coloured areas at the side of the window.</p>
<p>Grab the mxml here: <a href="http://www.mikecann.co.uk/Files/WindowResizer.mxml">WindowResizer.mxml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/resizeable-chromeless-window-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the Bleeding Edge</title>
		<link>http://mikecann.co.uk/personal-projects/on-the-bleeding-edge/</link>
		<comments>http://mikecann.co.uk/personal-projects/on-the-bleeding-edge/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 22:26:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Inputtie]]></category>
		<category><![CDATA[Java FX]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Robot Legs]]></category>
		<category><![CDATA[Signals]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=895</guid>
		<description><![CDATA[Well it thought it was about time I did some posting about my personal project im working on at the moment as I havent spoken about my coding for a while. For a while now (alot longer than I had hoped for) I have been working on a project that falls outside the realms of [...]]]></description>
			<content:encoded><![CDATA[<p>Well it thought it was about time I did some posting about my personal project im working on at the moment as I havent spoken about my coding for a while.</p>
<p>For a while now (alot longer than I had hoped for) I have been working on a project that falls outside the realms of my usual kind of games-related projects. Im not ready do describe exactly what it is yet but im excited about it.</p>
<p>For months I have been struggling with the techinal challenges the project has entailed and I have dabbled with many new and highly diverse technologies including <a href="http://www.mikecann.co.uk/programming/flirting-with-javafx/">JavaFX</a> (Java), Qt (C++) and Mono (C#).  I have been looking for a cross-platform technology that will get the job done that I need and doing it in an elegant manner.</p>
<p>I thought I had found it with a combination of JavaFX and straight Java using the PureMVC framework. I however was plagued with problems throughout with Bonjour, jGroups, JmDNS, JNI and JNA.</p>
<p>So after months of work, hardship and struggles I read a very interesting article on the up-and-coming Adobe AIR 2.0  that was opened for beta in December. With 2.0 Adobe are bringing NativeProcess  to Air. What this means is that you can you can execute native code (.dlls, .so, .jar etc) from Air. To me this was bloody brilliant as I had been<a href="http://www.mikecann.co.uk/programming/audiobook-organiser-v1-3-0-dragndrop/"> playing with Air reccently</a> and my <a href="http://www.mikecann.co.uk/photos-personal/playdemic-my-fist-day/">day-job</a> heavily involves Flex and I simply love the power and beauty of Flex.</p>
<p>So what this meant to me was that I could write the bulk of my project including its interface in my much preferred Adobe Flex (Air) and then use Native Process to communicate with a small kernel of Java that would do all the dirty work that Air itself cant do.</p>
<p>So after a little playing with <a href="http://www.riaspace.net/2010/01/flerry-flex-java-bridge-for-adobe-air-2-0/">Flerry</a> for Air-&gt;Java bridge I started to think about the structure of the code and the framework I would use. For my initial few runs at this project I had been using the Java version of PureMVC. I really like some aspects of PureMVC but I think its can be so overly cumbersome in some circumstances (ill write another post on this in the future I think). So instead I looked at the alternatives.</p>
<p>I have been using <a href="http://mate.asfusion.com/">Mate</a> alot recently at work and on my own mini-project the <a href="http://www.mikecann.co.uk/programming/audio-book-organiser-air-mate-flex-4/">Audio Book Organiser</a>. However as this project is partly for my own learning and personal growth I decided to look at what else there was out there. From the videos by <a href="http://www.mikecann.co.uk/fun-videos/jessie-warden-flash-flex-videos/">Jessie Warden</a> I had heard about <a href="http://www.robotlegs.org">Robot Legs</a>. Apparently this framework has been around for a while, but it was the first I had heard of it. Taking at look at it I immediately became very excited as it looks like it offers all the things that make PureMVC great but without the extra coding-baggage that goes with it.</p>
<p>To add to my interest it appears another very interesting, very new action-script technology has been introduced into Robot Legs called <a href="http://github.com/robertpenner/as3-signals">Signals </a>by Robert Penner. Signals is an alternative to the standard events dispatching method found throughout flash (more on this in another post).</p>
<p>So why have I called this post &#8220;the bleeding edge?&#8221;. Well Adobe Air 2.0 is still in beta and has only been for a month or so. Its so new that some parts still havent been documented atall and the only way to find out how they work is to post a msg to the devs on the forums. Signals is also new and its integration into Robot Legs is very new indeed (last coupple of weeks). So at the moment I feel as if im at the forefront of some very new, very exciting technology, a stark contrast to my fiddlings with the ancient Java.</p>
<p>I realise this post is very text and tech-heavy but I needed to post about it before I forgot all the pain I have gone through with this project to get where I am at the moment. Future posts ill be delving a little deeper into some of my experiments with these new technologies <img src='http://mikecann.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/on-the-bleeding-edge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AudioBook Organiser v1.3.0 &#8211; Drag&#039;n&#039;Drop</title>
		<link>http://mikecann.co.uk/personal-projects/audiobook-organiser-v1-3-0-dragndrop/</link>
		<comments>http://mikecann.co.uk/personal-projects/audiobook-organiser-v1-3-0-dragndrop/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:07:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Audiobook]]></category>
		<category><![CDATA[Drag-Drop]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=856</guid>
		<description><![CDATA[Well I was just doing some audio book organising and realised that it would be great if I could drag and drop a folder straight from my AIR into iTunes ready for upload to my iPhone. Anyways after a little searching through the docs I came up with this little ditty: var cp : Clipboard [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_04-Jan.-11-22.36.jpg"><img class="alignnone size-full wp-image-857" title="ScreenHunter_04-Jan.-11-22.36" src="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_04-Jan.-11-22.36.jpg" alt="" width="700" height="343" /></a></p>
<p>Well I was just doing some audio book organising and realised that it would be great if I could drag and drop a folder straight from my AIR into iTunes ready for upload to my iPhone.</p>
<p>Anyways after a little searching through the docs I came up with this little ditty:</p>
<pre>var cp : Clipboard = new Clipboard();
cp.setData(ClipboardFormats.FILE_LIST_FORMAT, [new File(book.url)], false);
NativeDragManager.doDrag(null,cp);</pre>
<div>Which gets fired by my DataGrid in the view:</div>
<pre>
<div>&lt;mx:DataGrid width="100%" height="100%" dataProvider="{books}" editable="true"</div>
<div>  itemEditEnd="{dispatchEvent(new BooksEvent(BooksEvent.PROPERTY_CHANGED));}"</div>
<div>  dragEnabled="true"</div>
<div>  dragStart="{dispatchEvent(new BooksEvent(BooksEvent.BOOK_BEGIN_DRAG, AudioBookModel(event.currentTarget.selectedItem)))}"&gt;</div>
</pre>
<div>Its pretty cool.</div>
<div>Anyways, the latest version and the source is below:</div>
<div>
<p><div id="flashcontent2213" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://mikecann.co.uk/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://mikecann.co.uk/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Audio+Book+Orgainser");
so.addVariable("appurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air");
so.addVariable("appid", "Audio+Book+Orgainser");
so.addVariable("pubid", "");
so.addVariable("appversion", "1");
so.addVariable("imageurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent2213");
// ]]&gt; -->
</script>
<br />
Source: <a href="http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v130_source.zip">http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v130_source.zip</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/audiobook-organiser-v1-3-0-dragndrop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Audio Book Organiser v1.2.0</title>
		<link>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/</link>
		<comments>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 18:37:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Audiobook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=826</guid>
		<description><![CDATA[Just did a quick update to the audio book organiser. Added the ability to move the storage database file. This was so that I can put my storage file on Dropbox and it will then be backedup and synced between machines. New version and sources: Please upgrade your Flash Player This is the content that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_01-Jan.-09-18.34.jpg"><img class="alignnone size-full wp-image-827" title="ScreenHunter_01 Jan. 09 18.34" src="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_01-Jan.-09-18.34.jpg" alt="ScreenHunter_01 Jan. 09 18.34" width="605" height="359" /></a></p>
<p>Just did a quick update to the audio book organiser. Added the ability to move the storage database file. This was so that I can put my storage file on Dropbox and it will then be backedup and synced between machines.</p>
<p>New version and sources:</p>
<p style="text-align: center;"><div id="flashcontent1546" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://mikecann.co.uk/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://mikecann.co.uk/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Audio+Book+Orgainser");
so.addVariable("appurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air");
so.addVariable("appid", "Audio+Book+Orgainser");
so.addVariable("pubid", "");
so.addVariable("appversion", "1");
so.addVariable("imageurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent1546");
// ]]&gt; -->
</script>
</p>
<p style="text-align: center;">
<p>Source: <a href="http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v120_source.zip">http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v120_source.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/audio-book-organiser-v1-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio Book Organiser (AIR, Mate, Flex 4)</title>
		<link>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/</link>
		<comments>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 12:38:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Audiobook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=807</guid>
		<description><![CDATA[Well its been a fun Christmas, I have eaten and drunk to the point that im going to be running it off in the gym till next christmas. Although there has been merryment abound, the keyboard couldn&#8217;t keep me away. Its probably okay to say this now as im not under any secrecy act; I [...]]]></description>
			<content:encoded><![CDATA[<p>Well its been a fun Christmas, I have eaten and drunk to the point that im going to be running it off in the gym till next christmas.</p>
<p>Although there has been merryment abound, the keyboard couldn&#8217;t keep me away. Its probably okay to say this now as im not under any secrecy act; I have decided to leave Massively Multimedia in Manchester to join a new startup called Ideas Pad in Wilmslow (just south of Manchester).</p>
<p>I cant say too much about exactly what I will be working on just yet but I can say that it will involve my experience in the Flash world. Specifically, I will be working in Adobe Flex again on some fairly sizeable projects. For this reason I wanted to brush up on my Flex as there has been a new release of the IDE (now named Flash Builder) and the SDK.</p>
<p>In addition I wanted to look at the various frameworks in use for Flex these days. I have used the usual Cairngorm, PureMVC before however I stumbled accross a new one called Mate (pronounced mah-tay, like the drink). Mate looked very interesting to me so before I jumped two feet in and used it in a commercial project I wanted to give it a spin in a simple project first.</p>
<p>Finally we get to the point of this post. I have developed a simple Adobe AIR application that allows you to organise audio books. The basic idea is simple you give the application a selection of &#8216;source&#8217; directories where your audiobooks belong then you can tick off whether you have listened to each one, and what rating you would give them.</p>
<p style="text-align: center;"><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_02-Dec.-30-12.32.jpg"><img class="size-medium wp-image-813 alignnone" title="ScreenHunter_02 Dec. 30 12.32" src="http://www.mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_02-Dec.-30-12.32-300x262.jpg" alt="ScreenHunter_02 Dec. 30 12.32" width="300" height="262" /></a><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-30-12.32.jpg"><img class="size-medium wp-image-814 alignnone" title="ScreenHunter_03 Dec. 30 12.32" src="http://www.mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-30-12.32-300x261.jpg" alt="ScreenHunter_03 Dec. 30 12.32" width="300" height="261" /></a></p>
<p>The data is persisted to a file that is saved to your hard drive, so when you open the application up again next time it remembers which audio books you have listened to and what ratings you gave them.</p>
<p>I havent tested it very much atall so there is a very high likelyhood of being some strange bugs in there. I am also releasing all the source code for this project for all to see, use and study if they so wish.</p>
<p style="text-align: center;"><div id="flashcontent7210" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://mikecann.co.uk/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://mikecann.co.uk/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "Audio+Book+Orgainser");
so.addVariable("appurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser.air");
so.addVariable("appid", "Audio+Book+Orgainser");
so.addVariable("pubid", "");
so.addVariable("appversion", "1");
so.addVariable("imageurl", "http://www.mikecann.co.uk/flash/AudioBookOrganiser/badgeImg.jpg");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent7210");
// ]]&gt; -->
</script>
</p>
<p style="text-align: center;">
<p>Source: <a href="http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v101_source.zip">http://www.mikecann.co.uk/flash/AudioBookOrganiser/AudioBookOrganiser_v101_source.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-projects/audio-book-organiser-air-mate-flex-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flirting With JavaFX</title>
		<link>http://mikecann.co.uk/programming/flirting-with-javafx/</link>
		<comments>http://mikecann.co.uk/programming/flirting-with-javafx/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 20:38:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Inputtie]]></category>
		<category><![CDATA[Java FX]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=790</guid>
		<description><![CDATA[For the past several months I have been working on a little project completely different to anything I have done before. Its a desktop application that uses a number of novel technologies to do something I think is pretty cool. Ill talk more about what it actually is and does in the coming weeks, but [...]]]></description>
			<content:encoded><![CDATA[<p>For the past several months I have been working on a little project completely different to anything I have done before. Its a desktop application that uses a number of novel technologies to do something I think is pretty cool. Ill talk more about what it actually is and does in the coming weeks, but for this post I just want to talk about the struggles and discoveries I have been through and made with the technology.</p>
<p>One of the basic tenants of the app is that it needs to work  cross-platform, so on mac, windows, linux, etc. As my previous experience with any sort of cross-platform coding involves using Java that was my natural first choice.</p>
<p>It has been a while since I have coding anything substantial in Java, infact my university project <a href="http://www.mikecann.co.uk/programming/java/chainreaction-binarysource-release/">Chain Reaction</a> was my last serious foray into the language:</p>
<p><img class="aligncenter" src="http://www.mikecann.co.uk/Work/CRImages/CR01.png" alt="" width="500" height="388" /></p>
<p>I knew that I wanted a nice rich interface for the project as it was intended to be sold to non-technical users. My first choice with Java was naturally with Swing. This, however, soon brought back various memories of &#8216;JPanels&#8217;, &#8216;Layouts&#8217; and &#8216;Look and Feels&#8217;  and the headaches of trying to make simple things look attractive (tho some cool advances have been made with <a href="http://www.pushing-pixels.org/">substance look and feel</a>).</p>
<p>After having worked for years with Flash / Flex I had grown used to the ease of drawing graphics and manipulating Display Objects in the display hierarchy. I was dismayed at how difficult it was to do what I considered &#8216;simple graphic tasks&#8217; using Java!  A simple google search for the terms &#8220;Java 2d graphics&#8221; demonstrates how old some of the concepts and documentation is on the subject.</p>
<p>I ended up writing and rewriting my view using different libraries like <a href="http://geosoft.no/graphics/">G</a>:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-13-20.05.jpg"><img class="aligncenter size-full wp-image-791" title="ScreenHunter_03 Dec. 13 20.05" src="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_03-Dec.-13-20.05.jpg" alt="ScreenHunter_03 Dec. 13 20.05" width="590" height="201" /></a></p>
<p>I found them all to be unwieldy and too inflexible for what I had in-mind. It all just seemed so archaic and old-hat.</p>
<p>So I was becoming more and more frustrated with myself for not progressing with the project and becoming hung up on something I had taken for granted in the Flash world. It was then that I happened to stumble across (this is after weeks of struggling) the <a href="http://javafx.com/">JavaFX project</a>. Now I had heard about this many months back but had dismissed it as Suns rather lame attempt to steal some of Adobe&#8217;s dominance of the Flash player market (much like Microsoft&#8217;s attempt with Silverlight).</p>
<p>As I was at the end of my line with Java I thought, hell why not give it a little look. Well it took me by surprise. It turns out that JavaFX is rather neat!</p>
<p>For those who havent heard f JavaFX; taken from Wikipeda:</p>
<blockquote><address><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/javafx_logo_color_1.jpg"><img class="alignright size-medium wp-image-796" style="margin: 8px;" title="javafx_logo_color_1" src="http://www.mikecann.co.uk/wp-content/uploads/2009/12/javafx_logo_color_1-300x150.jpg" alt="javafx_logo_color_1" width="188" height="94" /></a>JavaFX is a software platform for creating and delivering rich Internet applications that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. </address>
<address> </address>
<address>
</address>
<address>TV set-top boxes, gaming consoles, Blu-ray players and other platforms are planned.JavaFX is fully integrated with the Java Runtime Environment (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running Java ME.</address>
</blockquote>
<p>What this means is that you can (with a little jiggery pokery) use JavaFX with normal Java. This is great as I had already written a whole load of code in Java which I didn&#8217;t want to get rid of.</p>
<p>The language JavaFX Script is great. It took a little getting used to as it is a declarative language (much like Flex&#8217;s MXML except that instead of using XML as the language it uses a Java Script like notation) but once I was used to it I could immediately see the awesome power it brings.</p>
<p>A little sample of code to give you a feel of how its declarative approach works:</p>
<pre>Stage {
    title: "Ello World"
    width: 300
    height: 300

    scene: Scene {
        content: [
             Text {
               font: Font { size: 22 }
               x: 20, y: 90
               textAlignment: TextAlignment.CENTER
               content:"Ello World!"
             }
        ]
     }
}</pre>
<p>This is your standard &#8220;Hello World&#8221; (but with a British twist):</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_06-Dec.-13-20.32.jpg"><img class="size-full wp-image-793 alignnone" title="ScreenHunter_06 Dec. 13 20.32" src="http://mikecann.co.uk/wp-content/uploads/2009/12/ScreenHunter_06-Dec.-13-20.32.jpg" alt="ScreenHunter_06 Dec. 13 20.32" width="406" height="339" /></a></p>
<p>The simplicity of rendering things to the screen was just what I was looking for as the for this project, it was a double bonus that the language is powerful.</p>
<p>I love some of the features of the language like the natively build in binding, the sequence manipulations, but Ill talk more about some of these features in another post as I have rambled enough in this one as it is.</p>
<p>For now however, if you want to do some more reading into JavaFX  I HIGHLY  this short set of tutorials: <a href="http://java.sun.com/javafx/1/tutorials/core/index.html">Learning the JavaFX Programming Language &#8211; Tutorial</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 233px; width: 1px; height: 1px;">
<p><strong>avaFX</strong> is a <a class="mw-redirect" title="Software platform" href="http://en.wikipedia.org/wiki/Software_platform">software platform</a> for creating and delivering <a title="Rich Internet application" href="http://en.wikipedia.org/wiki/Rich_Internet_application">rich Internet applications</a> that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. TV set-top boxes, gaming consoles, <a class="mw-redirect" title="Blu-ray" href="http://en.wikipedia.org/wiki/Blu-ray">Blu-ray</a> players and other platforms are planned.</p>
<p>JavaFX is fully integrated with the <a class="mw-redirect" title="Java Runtime Environment" href="http://en.wikipedia.org/wiki/Java_Runtime_Environment">Java Runtime Environment</a> (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running <a class="mw-redirect" title="Java ME" href="http://en.wikipedia.org/wiki/Java_ME">Java ME</a>.</p>
<p><strong>JavaFX</strong> is a <a class="mw-redirect" title="Software platform" href="http://en.wikipedia.org/wiki/Software_platform">software platform</a> for creating and delivering <a title="Rich Internet application" href="http://en.wikipedia.org/wiki/Rich_Internet_application">rich Internet applications</a> that can run across a wide variety of connected devices. The current release (JavaFX 1.2, June 2009) enables building applications for desktop, browser and mobile phones. TV set-top boxes, gaming consoles, <a class="mw-redirect" title="Blu-ray" href="http://en.wikipedia.org/wiki/Blu-ray">Blu-ray</a> players and other platforms are planned.</p>
<p>JavaFX is fully integrated with the <a class="mw-redirect" title="Java Runtime Environment" href="http://en.wikipedia.org/wiki/Java_Runtime_Environment">Java Runtime Environment</a> (JRE) – JavaFX applications will run on any desktop and browser that runs the JRE and on top of mobile phones running <a class="mw-redirect" title="Java ME" href="http://en.wikipedia.org/wiki/Java_ME">Java ME</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/programming/flirting-with-javafx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

