Shaun Mccran

My digital playground

25
J
A
N
2011

Chroma circuit Android game review

I've been waiting for Bowler Hat games Chroma Circuit for a while now. It was demonstrated at Scotch on the Rocks last year, and it looked like quite an innovative mobile puzzle game.

[ More ]

28
J
U
L
2009

Finding the system file storage in AIR

When progamming an AIR application, you may want to make use of the applicationStorageDirectory available via the flash.filesystem package to store temporary files/folders. You can find where your system is storing these files by doing something like the following:

view plain print about
1var f:File = File.applicationStorageDirectory.resolvePath("Test.txt");
2trace(f.nativePath + ' is where my file is stored');

This will give you an absolute path to the local system file storage location. Handy for multi platform applications, as Pc and MAC based systems will use different default storage directories.

12
J
U
N
2009

Opening a new window from a flex / AIR application

I was sure I had done this before, somewhere but I couldn't find the code anywhere. So I've knocked together a really quick and simple example.

I want to be able to open a new site in a pop up from an AIR application. To do this I need to use the 'urlRequest' function to create a url request. Then insert that into a 'navigateToURL' method, specifying that you want a new window '_new'.

Here is the complete example.

view plain print about
1<?xml version="1.0" encoding="utf-8"?>
2<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
3
4<mx:Script>
5    <![CDATA[
6
7     public function goToUrl(link:String):void
8     {
9        var urlRequest:URLRequest = new URLRequest('http://' + link);
10
        navigateToURL(urlRequest, "
_new");
11     }
12        
13    ]]>
14</mx:Script>
15    
16    <mx:Canvas x="10" y="10" width="321" height="146" backgroundColor="#FFFFFF">

17        <mx:Form x="10" y="52">

18            <mx:FormItem label="URL">

19                <mx:TextInput id="urlTxt"/>
20            </mx:FormItem>
21        </mx:Form>
22        <mx:Button x="10" y="114" label="Go to" click="goToUrl(urlTxt.text)"/>
23        <mx:Label x="10" y="10" text="New Window test" />
24    </mx:Canvas>
25    
26</mx:Application>

Works like this.

View demo.

06
A
P
R
2009

Adding custom Chrome to your AIR application

Whilst creating my last AIR application I found that the standard 'Chrome' that is provided by the OS just didn't match the application look and feel at all.

After a little searching I found that there are a few key elements in your application that you need to change to remove the standard operating system Chrome, and stop Flex builder from replacing it with its own.

Firstly in your application-app.xml document look for the 'systemChrome' xml value. Setting this to none will disable the operating system Chrome. As we are using the 'WindowedApplication' Flex builder will automatically start using its own Chrome framework, so we need to turn that off too.

view plain print about
1<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
2<systemChrome>none</systemChrome>
3
4<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
5<transparent>true</transparent>

This is done in the WindowedApplication code, set showFlexChrome="false" and that will disable Flex from using its default Chrome.

view plain print about
1<?xml version="1.0" encoding="utf-8"?>
2<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" showFlexChrome="false">

Now that we have completely turned it all off, we need to build our own. In this application I am using a canvas with rounded corners that is 15 pixels larger than the application canvas, to give the impression of a border all the way around. Inside that canvas I've added two controls.

view plain print about
1<mx:Label text="_" styleName="controls" toolTip="Minimize" x="173" y="-2" click="onMinimize()" />
2<mx:Label text="X" styleName="controls" toolTip="Close" x="184" y="1" click="onClose()" />

These simply replicate the functionality that the minimise and close buttons give a user on a standard window. The functions they call are:

view plain print about
1public function onMinimize():void
2     {
3         stage.nativeWindow.minimize();
4     }
5    
6     public function onClose():void
7     {
8         stage.nativeWindow.close();
9     }

And with that you fully customise the look and feel of your applications Chrome.