hello@thoughtomatic.co.uk
Studio: +44 (0)20 7738 7380
Latest
Categories
- Architecture (4)
- Art (42)
- Branding (12)
- Design (42)
- General (170)
- Interactive (20)
- Interesting (51)
- Photography (27)
- Print (13)
- Technical (26)
- Typography (18)
- Web Development (12)
Archives
- January 2012
- December 2011
- November 2011
- September 2011
- August 2011
- July 2011
- February 2011
- January 2011
- December 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- June 2007
- May 2007
- March 2007
- February 2007
Morisawa, a japanese developer of digital fonts, created Fontpark, an awesome Flash application to help market their products. Fontpark is basically a drawing tool, where you use japanese or latin glyphs to create patterns and illustration like images. The glyphs can be dragged around, scaled, rotated and duplicated. The whole process is recorded and can be watched afterwards. There is a gallery with sorting functionality and a rating tool. All user works can be browsed, there is an embedded player widget as well, that shows a random piece. Below you can see an example of the recorded process.
Link: fontpark.morisawa.co.jp

Would you believe it we have won our second “Webby award”, last year it was the “people’s voice” award, this year its a full blown Webby.
Its for one of our favourite clients the “cake factory” its won the “Professional Services” category.
Hailed as the “Internet’s highest honor” by the New York Times, The Webby Awards is the leading international award honoring excellence on the Internet, including Websites, interactive advertising, online film and video, and mobile web sites. Established in 1996, the 13th Annual Webby Awards received nearly 10,000 entries from all 50 states and over 60 countries worldwide.
Needless to say we’re smiling… lots…
Now back to work! Oh and watch this space our own website is being redesigned very soon…
Yesterday a friend of mine sent me a link, which i thought would carry me to just that ordinary, maybe a bit outstanding from a content perspective ( otherwise he would not have sent it), type of video on vimeo i was used to. But what I saw then, literally blew my mind. For me, the most amazing, most beautiful, most technical enhanced and most psychological effective online advertising piece I ever saw in my life. Great work, vimeo!
Sorry for not embedding the video here, but You have to watch it directly on the vimeo site to perceive it`s effects. Click the Screenshot!
Hello! our second site in a month to enter the Design Charts.
Visit Alexp Car photography site here.

www.wonnacott.com is doing the rounds in the blog-a-sphere and is getting a good reaction, its currently number 13 in the Design Charts. It’s great to have a talented & creative client to work with.
We have just launched a new website for Martin Wonnacott, arguably one of the best drinks photographers in the world and a long-time friend of the studio. He is in such demand that he recently featured on three separate ad campaigns running concurrently in Times square NYC.
We developed a site packed with great functionality, an intuitive interface, delivered with an understated graphic style to compliment his sumptuous work. You can find deep linking, full screen mode, oversized thumbnails, a content management system and a build your own PDF function. So grab your self a drink and enjoy. [Visit Site]

Asual recently announced a new release of their SWFAddress.
SWFAddress is a JavaScript library empowering deep linking in Flash and AJAX applications by creating unique pseudo URL`s, based on a hash-separation of a URL token as it is used for navigating anchors in traditional HTML sites. It also supports bookmarking, Browser Back Button / History and controlling of Title and Status bars of the Browser.
In this latest version 2.2. amongst some great new features like official support for Internet Explorer 8, improved title handling, minor Fixes for Safari 2.0-2.0.3, the onload fix for xml content types ( esp. relevant in AJAX applications ) I am personally happy about the Fixation of the nasty blinking effects, that occur in Flash Sites with SWFAddress in Safari3 for MacOS. It seemed to relate to the usage of Flash`s ExternalInterface. Everytime a tween or scripted animation is running while SWFAddress gets triggered, this strange effect occurs. In Firefox3 on Windows I haven`t experienced that proplem so far. There has been a workaround by delaying the invocation of SWFAddress`s setVAlue() – method with every call. Good to see a unified fixation for that issue now. The developers of Asual claim to have released a pretty stable piece of software that certainly wont require major updates, adoptions in your daily work.

Lightning effects are attractive elements in graphical design and sometimes even needed to express a meaning or carry a certain message or mood.
psdfan set up a collection of tutorials for some outstanding ones in a 3 part series. A potent provision
of new skills and inspiration definitely worth a look.

Here are the links to all article parts:
Part 1
Part 2
Part 3
Adobe just released a Beta of their new Labs project called Durango. Durango is a Framework to build AIR applications that can provide reusable components. Adobes goal with Durango is a “new way to share code and drive viral adoption of new components and services”. Durango addresses end users without the need to have any programming knowledge as well as developers to mashup applications by simply dragging components from one Durango application to another at runtime. These components can be visual UI elements or pure data services. Once a Durango application gets a component dropped in, the framework tries to automatically hook it in into its own application logic. Components simply accept inputs and produce an output. Durango components can share their information via conventional Flex Data Binding.
Properties on Durango components that may be connected are marked using the known metadata tags.
[as]
[AutoConnect(sink,source)] //can connect as both as inputand output
public override function set htmlText (val : String):void {
super.htmlText = val;
}
public override function get htmlText () : String {
return super.htmlText;
}
[/as]
Properties may be tagged as data sources, destinations, or both. When new components are added to an application, Durango makes as many connections to it as possible from among the available unbound component properties already in the application. Connections are made whenever values can be converted to the available type, or can be constrained to match property names.
Durango gives also the possibility to manually inspect and alter the way it`s components actually hook in by disabling or reassigning them or modifying descriptors as in the case of web service reuse / publish.Durango also announces a rapid application development approach by mashing up protoypes that can be incorporated into Flex Builder projects.
Follow this link for further information.
Sometimes i remember back, how easy it was in AS2 days to cope with visual objects´ depths or z-indexes, looping lists with applying the iterator to the depth of an object during instanciation by just providing a depth argument in attachMovie( “linkageId”, “newName”, depth ) or swapthDepths( depth ) for already existing Objects on the stage. Depth could be arbitrarily chosen. MovieClip.getNextHighestDepth() came in handy to put an object on top of all other object within one parent object. So MovieClips could literally be “parked” anywhere in AS2. It was convenient, nice, but somewhat anarchic. In AS3 we are now faced to much more constraint. The depth of a visual object, an instance of the so called DisplayObject or one of its SubTypes is bound to the term of the “Display List” where no “free” element positions can occur in the list, each new element coming to the list is added on top of the last one , fitting the next free position. ( assuming a incremental addChild(), not addChildAt() ) Once a list branch below a node is populated with display object items, the depths can be swapped or set for the already existent objects and only within a range from 0 ( the first possible depth position, an object occupies when being added to the list ) and the amount of objects underneath that same parent node minus 1. Sometimes that can result in kind of a hazzle when you have to reorganize the depth sorting of your objects when already in the displaylist, especially if you had added them without keeping track of during creation ( use of bare incremental addChild() )
When working with displayobjects consideing depth in AS3 the following methods are useful / neccessary :
[as]
parent.getChildIndex( chlild ) // returns the depth index of child within parent
parent.getChildAt( depth ) // returns the child object on depth position [depth] within parent
parent.addChildAt( child, depth ) // adds a child to the depth position [depth]
[/as]
this is possibly the method with the most confusing results ( runtime errors ) since depth can only be a range between 0 and the amount of existing sibbling object in the list minus 1
[as]
parent.swapChildrenAt( depth1, depth2 ) // swaps the object sitting on depth1 to depth2, the object sitting on depth2 is placed on depth1. For both arguments depth1 and depth2
[/as]
the same constraint as stated for parent.addChildAt( child, depth ) – they have to be in the range from 0 to numChidren – 1
and this property
[as]
parent.numChildren // gives the amount of children currently in the display list of parent
[/as]
So what if we could sort all child objects within a parent to predefined target depths ? It would be useful, when different application parts write or create object in one display list branch and we dont want to care for the addChild() order on that branch. We shoukd keep in mind, that we only can target depths not exceeding the current object amount, so we have at least to know about the resulting object structure beforehand
or we ont care and filter through a try catch block Anyway, we had a way not to care about the order of object creations within a parent node, if we knew the demanded final depths / the object structure, if we could address beforehand that demand before creation to have all objects restructed to that demand.
[as]
package de.fascina.display
{
import flash.geom.Rectangle;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
/**
* @author Henry Schmieder
* @version 0.2 20.11.2008
*
*/
public class DisplayUtils
{
public static function sortChildren( d: DisplayObjectContainer, sortPropertyName: String ): void
{
var children:Array = [];
var a: *;
var b: *;
var o: int;
var i: int;
var curChild:*;
for ( i = d.numChildren; i > 0 ; i– )
{
try {
curChild = d.getChildAt( i );
}catch( e:Error )
{
}
if( Object( curChild ).hasOwnProperty( sortPropertyName ) ) {
children.push( new ChildVO( curChild, i ) );
}
}
var max: int = children.length – 1;
for ( i = max; i > 0 ; i–)
{
var bFlipped: Boolean = false;
for ( o = 0; o < i ; o++)
{
a = d.getChildAt( ChildVO( children[ o ] ).index )[ sortPropertyName ];
b = d.getChildAt(ChildVO( children[ o + 1 ] ).index )[ sortPropertyName ];
}
if ( a > b ) {
d.swapChildrenAt( o, o + 1 );
bFlipped = true;
}
}
if ( !bFlipped ) return;
}
}
}
class ChildVO
{
public var index:int;
public var reference:*;
public function ChildVO( reference:*, index:int )
{
this.reference = reference;
this.index = index;
}
}
[/as]
We can introduce a property “depth” for a DisplayObject sub type, a kind of meta property representing the wish to target that depth
That is easy. We just have to write a sub class of a DisplayObject, lets say MovieClip.
[as]
package de.fascina.display
{
import flash.display.MovieClip;
/**
* @author Henry Schmieder
*/
public class PyrMovieClipSortable extends MovieClip
{
public var depth:int;
public function PyrMovieClipSortable( depth:int )
{
this.depth = depth;
}
}
}
[/as]
And to use it this way…
[as]
var mc0: PyrMovieClipSortable = new PyrMovieClipSortable( 0 );
var mc1: PyrMovieClipSortable = new PyrMovieClipSortable( 1 );
var mc2: PyrMovieClipSortable = new PyrMovieClipSortable( 2) ;
var mc3: PyrMovieClipSortable = new PyrMovieClipSortable( 3) ;
var parent:Sprite = new Sprite();
parent.addChild( mc2 );
parent.addChild( mc0 );
parent.addChild( mc3 );
parent.addChild( mc1 );
DisplayUtils.sortChildren( parent, “depth” );
[/as]
The objects are now sorted after their depth property.
we could also use the name-property which every DisplayObject is provided with.
[as]
var s0: Sprite = new Sprite();
var s1: Sprite= new Sprite();
var s2: Sprite = new Sprite();
var s3: Sprite = new Sprite();
s0.name = “s000″;
s1.name = “s001″;
s2.name = “s002″;
s3.name = “s003″;
parent.addChild( s2 );
parent.addChild( s0 );
parent.addChild( s3 );
parent.addChild( s1 );
DisplayUtils.sortChildren( parent, “name” );
[/as]
When it comes to working with structures of Display Objects and depths there is another tool that may come handy.
This class, merely an object parser, but with the feature to also trace a nested structure of objects in the display list and showing their depths. Via a public static member SHOW_SHAPES = false we can exclude Shape Objects from being shown since they mostly habe no relevance to the program logic and therefor dont need to be traced.


