| dig-center | dig-news | dig-arts | dig-fun | dig-humors | dig-music | dig-tech | dig-desktop | dig-moreabawt |

Research: First Steps for Designers

Research: First Steps for Designers

By Elliot Jay Stocks


___________________________________________

Elliot Jay Stocks

Elliot Jay Stocks Always aspiring to create a unique look that's out of the ordinary, Elliot Jay Stocks's design is frequently featured in online and offline publications. His work is showcased on various design inspiration web sites, where it's used as an example of how accessible web design can still look beautiful. Elliot is also known to write about design trends, issues, and techniques for industry-leading publications such as Practical Web Design and Computer Arts Projects. He can be seen regularly at design conferences around the globe, taking to the stage as both a speaker and a workshop host.

___________________________________________


In his new book, Sexy Web Design, Elliot Jay Stocks shares the methods he uses to create stunning web interfaces—and one of the most important steps is to do some research. In this sample from the book, Elliot explores different ways to gather inspiration and cool ideas for your next project.

We’ve been hired by an events promoter to build a website for an upcoming event for Web industry professionals. The goal is for the visitor to buy an “access all areas” ticket for the event; the design should have a huge impact on users when they visit, the interface should be usable and clutter-free, and they should be really impressed by what they see. But before we even think about touching Photoshop, we need to do some research.

Let’s begin with the first logical step, and analyze the brand values associated with the event. These in turn will be the core messages that the site needs to convey. Let’s imagine we ask our client for some brand values, and they give us the following ideas to work with:

  • fun and exciting: more than just a conference
  • credibility: advice from the absolute experts
  • inventive and innovative: a group of creative people open to new ideas

Already that might start conjuring up some stylistic ideas in our minds, but let’s leave that for the moment. We should be asking ourselves: what makes up an event site? Our client has yet to specify the actual pages they want, so we’ll help them out by brainstorming:

  • Home: an introduction to the event; leads people into other parts of the site
  • Bookings: to sell the ticket types
  • Schedule: for details about the event
  • Speakers: an easy glance at the experts involved
  • Venue: where the event is located and the facilities available
  • Sponsors: may appear in the sidebar or footer, rather than a page of its own
  • Community: parties, links to social networks, photos, and so on

Let’s take a look some of the values we want to convey with our site, and take a peek at how other event web sites go about it.

The Element of Fun

Events—or, more specifically, the kind we like to have in the web community—tend to emphasize the convivial aspect. Who would’ve thought that people like to hang out with their friends and colleagues for a social drink?

With the fun element being such an important selling point, it makes sense for us to give this a lot of prominence on our web site. Although it’s important to stress the knowledge that can be gained at such events, we all know that we’re just as interested in the parties! That’s why we’ll suggest to our client that a whole page should be dedicated to social gatherings happening around the event, with the imagery of the site portraying a fun, party-like atmosphere.

Gravitas and Authority

But we mustn’t get carried away with all this fun malarkey. We need to make it clear that this is a credible, serious event, too. Otherwise, how else are delegates going to convince their bosses to pay for this out of their training budget? The web site for Web Directions North, shown below, is neat, clean, and means business.

The straightforward design of Web Directions North

Going to an event is meant to be an educational experience, especially when a workshop is involved. The Sidebar Workshops site we see in the figure below does this well by explicitly stating What You’ll Learn right near the top of the page, and again right underneath the registration information. As well as the prominent position, the text is short and easily digestible: a nice, memorable chunk to take away.

We know exactly what we'll gain from Sidebar Workshops

Inventive and Innovative

Our client also wants us to ensure that the design suggests a feeling of invention and innovation. One way to present this idea with the most impact will be to create a design that breaks the rules slightly, whether that’s in terms of color, layout, or type. As we look around for inspiration for our design, we’ll be sure to keep our eyes out for examples that exemplify this goal. The real opportunity for trying something new will come later, however, when it’s time to plan the aesthetics of the design.

Achieving a Balance: Information and Atmosphere

Balancing the display of information while conveying the right atmosphere is a huge challenge.

When I designed the Future of Web Applications (FOWA) Miami 2008 site, I attempted to get the best of both worlds by giving the site a fun kind of feel with the beach in the background, but keeping the information neatly organized in the foreground. You can see this on the schedule page in Figure 1.3, with the clear separation of time slots and information. We decided that it would be more helpful if I designed some icons to visually indicate each type of session; that way, users could clearly see if it was a presentation, a lunch break, or a party, and so on. This allowed for the opportunity to throw a bit more of the playful feeling into the mix, so I threw in some little dudes.

Adding fun to a schedule with some playful icons on the FOWA Miami 2008 site

The Sidebar guys kept the schedule looking fairly businesslike on their Workshops site, seen in Figure 1.4, but it still looks terrific, and is a great example of attention to detail.

More great design on the Sidebar Workshops site

What Matters the Most?

If you think about what might be the most important information relating to an event, you might say date, location, and price—but in all likelihood there are other elements that entice potential attendees.

Most events’ web sites recognize celebrity appeal and make their big-name speakers as obvious as possible, like dConstruct, shown in the figure below. The reverse is also true: if the event lacks many web personalities, they’ll play down the speaker list. Sometimes the speaker list is so unwieldy that they choose to exclude it from the homepage altogether, and instead focus on more general information, as demonstrated by the South by Southwest Interactive homepage below.

Speakers are the priority on the 2008 dConstruct site's homepage ...

... but the multitude of speakers at South by Southwest Interactive5 means the homepage should house

Venues and locations can sometimes be a drawcard for delegates. And when the location is also a popular holiday destination like Miami, then you should really shout about it.

The FOWA Miami 2009 site is unapologetic for its bold declaration of the location

Brand Consistency

Brand consistency is the goal of keeping a consistent look, feel, and message across all of a company’s communications, including its web site. Depending on the project, you could find yourself in one of a number of potential situations. Let’s take a look.

From Scratch

If the brand for the event is yet to exist, then our site will be providing the beginnings of a defined experience and acting as a style guide for other events to follow. Be mindful that limits may still apply, though: this might be the first event, but it should probably tie in with already established concepts by the company. That might translate to a simple action like incorporating the parent company’s logo into the footer, or it may be more complex: there could be a particular set of style guidelines that we have to follow, such as a color scheme or font.

Redesign

If previous site designs exist, then you should maintain consistency, but each event could have its own voice, or theme. You can use previous versions of the site as a guide to design elements you could reuse. Perhaps you could use a different color palette, yet still maintain a similar design template.

Tie-ins

You may need to create a design that closely ties in with a previously established identity. The An Event Apart web site seen below has its own branding, but incorporates the exact same look and feel of its sister site, A List Apart. Rather than taking only small elements of the design patterns as you might find when a child site is borne of a parent company, the two are treated as equals: two sides to the same coin.

The literal tie-in of the web sites for An Event Apart and A List Apart

For our project, we’ll need to incorporate the company logo of the organization running the event—but we’ll have free rein when it comes to the actual event branding, since it’ll be the first of its kind (that is, the first scenario—From Scratch—above). This will demonstrate how you can be creative while still operating within a few guidelines. Guidelines are good, by the way: they take away some of the scare factor of a completely blank canvas!


Inspiration Resources

So far we’ve been looking to other events’ web sites for inspiration, but we don’t have to stick to that niche. It’s become quite popular to collect examples of first-rate design and archive them as sets on Flickr, an image-sharing service. To start off, check out Patrick Haney’s massive collection, and the Web Design Inspiration Flickr pool which he administers. For even more Flickr sources, check out Vandelay Design’s list of 99 Flickr groups for design inspiration. And numerous web sites exist, such as Smashing Magazine and UI Pattern Factory, that are excellent sources of interesting design examples.

Atmosphere Inspiration

Let’s get an idea of the kind of atmosphere we’d like our site to have—the feeling we evoke through color, subject matter, and texture. You may be familiar with the concept of a mood board, which describes a general collection of images, textures—almost anything that conveys the same mood you want to achieve. Let’s take the term wooden: a traditional mood board might entail, for example, cutting out images of wooden furniture from catalogs or photographs of trees from magazines, and then laying them down on a canvas to make a montage.

Oh, and by the way, it’s unnecessary to use an actual board—any surface (physical or virtual) will do! There is even a variety of software tools available to help you create your own mood boards if you want to do so digitally. The figure below shows a mood board created in Photoshop from public domain and Creative Commons-licensed images found on the Web.

A mood board

Collating a photo set on Flickr is akin to the action of creating a mood board, particularly when researching atmosphere. I’ve collected some, which you’ll see below.

My atmosphere set on Flickr

Composition Inspiration

We aim to create a unique and interesting web site, setting it apart from the kind of site you see every day. A noteworthy way to stand apart from the other sites is to think of an unusual composition or layout. We'll need to take a few risks in the interests of originality, so I’ve been collecting design examples which follow the same mantra. Of course, we’ll still be mindful of the site’s usability—it’s important to stick with what users will understand—but you’ll see that even a little thinking outside the box can go a long way. Here’s my composition set on Flickr:

My set of composition examples

Functionality Inspiration

Our site will contain a number of functional elements, like navigation mechanisms, a ticket purchase form, a schedule, and plenty more. It’s useful to look at all the different ways other designers have chosen to implement each of these elements.
Chris Messina has been collecting examples of user interface (UI) design on Flickr for years now, and his collections go beyond pure inspiration into the realm of an indispensable resource. You’ll also find a wealth of UI examples collected at Pattern Tap, where users have collected, tagged and commented on widgets from all over the Web.

Chris Messina's design pattern sets on Flickr

Look Outside the Web

I’m a keen believer in the idea that if you only use web sites for inspiration, you’ll only ever build a web site that looks like other web sites. Of course there’s nothing wrong with that—it’s essential that a web site looks and behaves like one—but you risk your design growing stale if you search for stimuli in only one place.

There’s a whole world out there full of outstanding design—architecture, fashion, product, packaging ... why confine yourself to one medium and limit your creative potential? Take your trusty camera and go for a walk—collect photos of signs, textures, anything that grabs your fancy. Doodle in a notebook whenever you have an interesting idea. Before you know it, you’ll have a huge collection of inspiring material from the real world.

If you look at the world of print design in particular, you’ll see most of the same principles of web design at work. After all, the new discipline of web design is derived from years of print design tradition, but with a few of the limitations and freedoms reversed. So there’s still plenty of inspiration we can take from the print design world to better inform what we can achieve on the Web. I’ve collected some offline examples in—you guessed it—another Flickr set, shown below.

My offline inspiration set

Collection Tools

I’ve been saving interesting and inspiring snippets in my Flickr profile, but it’s not the only way.

RealMac Software—the team behind web development application RapidWeaver—have recently released LittleSnapper, a Mac application that allows you to collect sources of inspiration from the Web and share them with your peers. It’s a nifty new tool for Mac-based designers, and one I’d heartily recommend.

For Windows users, TechSmith’s Snagit application captures screenshots and screen images, with a library you can use to organize your screenshots by tags, URLs, and date.

Then there’s Evernote, suitable for both Mac and Windows, an all-encompassing note-keeping application that you can access from just about everywhere, thanks to versions for your desktop, phone, and web browser. You can create, upload, and save images, text and audio, and if there’s text contained within the image, Evernote’s optical character recognition (OCR) engine will identify it and make it searchable. That's very handy for when your notes archive becomes rather large!

The extremely powerful Evernote

LittleSnapper, for happy snappers

Research: an Ongoing Process

Research is one of the most valuable ways to spend your time as a designer. Keep your eyes and mind open, and let yourself be influenced as much as possible. Ultimately, the more research you do, the more likely your design will be a success.

If you've enjoyed this excerpt from Sexy Web Design by Elliot Jay Stocks, then you'll love the complete sample chapter. Even better, buy the book and begin creating stunning web interfaces today.



The Best Structure for your Flash Site

The Best Structure for your Flash Site

By Mark Angeletti

___________________________________________

Mark Angeletti

Mark Angeletti

Mark runs Search-This.com, a resource site for Internet marketing and web development. He also enjoys talking about faith, music, and all things web-related on his blog, What a Savage.

Mark Angeletti has written 4 articles for SitePoint with an average reader rating of 8.

View all articles by Mark Angeletti...

___________________________________________

Adobe's (formerly Macromedia's) Flash application is, according to them, "The industry's most advanced authoring environment for creating interactive web sites and digital experiences." However, many users have trouble structuring their site efficiently within Flash.

When Flash is opened, a blank canvas appears, and a single layer with multiple blank frames displays, waiting to be used, as you can see in the image below. There's little guidance on how to proceed, and many different directions that one can take. So it's easy to see why users can become confused.

1513_image1

Over the past six years of working with Flash and helping others with their own Flash projects, one thing has become clear to me: no two Flash web sites are laid out the same. Sadly, over 90% of the Flash sites I've seen are not structured efficiently; some are horribly inefficient. While there may be no one right way to structure a Flash web site, some ways certainly are better than others.

Keep in mind that when I say "structure" I'm not talking about how your web site looks; we don't care how your web site looks, at least, not in this article. Structure is about setting up your Flash site with Keyframes, ActionScript and MovieClips, and controlling the Flash playhead. Good structure can make your site load faster, make it easier to manage and update, and keep unexpected things from happening. A bad structure can increase load times, make it painful to make changes in future, and cause unexpected headaches. The principles explained in this article apply to all Flash site designs.

In this article, we'll develop a navigation system. Though it might seem trivial, this will serve as a good example for this article and the techniques can be applied to any project you're working on, be it a full Flash web site, a Flash poll, or a Flash RSS reader. Incidentally, I've created all of these in the last month, and all exhibit the structure that we'll see here.

Now is a good time to go ahead and download the necessary files so that you can follow along. That code archive contains a Flash FLA file, an XML file, a CSS file and a PNG image.

Inside the .fla

Once you open the navigation.fla file, you'll immediately notice how empty it looks. This file contains but 2 layers spanning 4 frames. Almost all my Flash 'creations' have a similar structure: typically no more than 5 frames and a handful of layers. If your Flash structure looks like the one shown in the image below, you're doing something wrong -- it's a good thing you're reading this article.

1513_image2

Let's start with a tip: Never use Scenes. Scenes can cause unexpected results from the playhead. The playhead doesn't really move from scene-to-scene gracefully. Depending on your Flash site, you may or may not notice this. But, if you're playing a music file and your playhead moves to another scene, you can witness problems as the song skips. For this reason, you won't find more than one scene in our file.

Let's examine each frame one by one.

Frame 1

Frame 1 is always -- and only -- used for setting global variables. This works well, as the playhead hits this frame first, sets our globals and moves on to the next frame. We never return to frame 1, ever. It's important always to control the Flash playhead and know where it's located at all times. Now, let's look at the code:

var xmlFile:String = "navigation.xml";
var cssFile:String = "navigation.css";
var nCounter:Number = 0;
var yPosition:Number = 0;
var nTotalButtons:Number = 0;

var astrImages:Array = new Array();
var astrText:Array = new Array();
var astrLinks:Array = new Array();

var image_mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();

// Formats our textField
var my_css = new TextField.StyleSheet();

// fun with filters (new in Flash 8)
import flash.filters.DropShadowFilter;
var distance:Number = 2;
var angleInDegrees:Number = 45;
var color:Number = 0x000000;
var alpha:Number = .8;
var blurX:Number = 2;
var blurY:Number = 2;
var strength:Number = 1;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var hideObject:Boolean = false;

var filter:DropShadowFilter = new DropShadowFilter(distance, angleInDegrees, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject);
var filterArray:Array = new Array();
filterArray.push(filter);

Here we see our global variables: some strings, some numbers, and some arrays -- your typical variables. But, wait. Some not-so-typical variables are also present: a MovieClipLoader, a StyleSheet and a Filter.

The MovieClipLoader class allows us to implement listener callbacks that provide status information while SWF, JPEG, GIF, and PNG files are being loaded into movie clips. This is a lot handier than the dated loadMovie() class, which failed to provide us with any information on how much of our file had already been downloaded. We'll use the MovieClipLoader class later to load our button image.

The StyleSheet class lets you create a StyleSheet object that contains text formatting rules for font size, color, and other styles. We'll use this StyleSheet in frame 4 to format the text on our navigation buttons.

Filters are new to Flash 8; they allow us to add some cool effects to our objects. For example, we can apply drop shadows, blurs, glows and bevels to objects. We'll apply the drop shadow filter to our text field later. Some will say, "Big deal. If I want a drop shadow I could use Photoshop or Fireworks for that." You could, but then your text would no longer be dynamic, as ours is.

Keep in mind that all the components that make up our Flash site don't reside in Flash. Perhaps I should have used an exclamation point instead of a period for that last sentence? Let me say it again, "All the components that make up our Flash site don't reside in Flash!" This approach allows for easy modification later. If, for example, I no longer like the image chosen for my buttons and I want to swap it out, that's no problem. Or maybe I want to have the button say something different, or perhaps I want to add or remove a button later. Neither will be a problem; in fact, I won't even have to open Flash to make these changes. That's very handy indeed, especially when you're creating a project for someone who doesn't have Flash, or much in the way of technical knowledge.

Before we move on to frame 2, notice our 3 arrays. These arrays will store the data for our buttons. Once our XML file has been parsed successfully, each array will be filled in with the proper data. This happens in frame 2.

Frame 2

To recap, what was the main purpose of frame 1? If you said, "Global variables", you get a gold star. If not, run down to Starbucks and get some coffee and come back.

The main purpose of frame 2 is to gather external data -- typically, literal files in the form of XML. If you haven't looked at our navigation XML file, this would be a good time to do so. This article is not intended to teach you XML, so just take a look at the structure and what's in there. We have a total of 4 buttons; each button is assigned an image, some text and a link.

A note to all you non-Flash 8 users: you won't be able to use a PNG image. You'll have to use the provided JPEG image and make the changes in the XML file. Previous versions of Flash are only able to load JPEG files.

Now, let's look at the code in frame 2. I'll break it down as we go.

var xmlData:XML = new XML();

We start by instantiating a new XML object and call it xmlData. The XML object contains all the methods and properties we will need in order to work with XML data in Flash.

xmlData.ignoreWhite = true;

Flash will read all spacing contained within the XML file, including empty text nodes. As this is not the desired result, we simply tell Flash to ignore white space.

xmlData.load( xmlFile );

This line loads an XML document from the specified URL. Remember, xmlFile was declared in frame 1 and set to "navigation.xml." Because our FLA file resides in the same directory as our XML file, we need only give the name. Had our XML file been located in a directory other than the one that houses our FLA file, we'd have included a relative path.

The load process is asynchronous; it does not finish immediately after the load() method is executed. When the load() method is executed, the XML object property loaded is set to false. When the XML data finishes downloading, the loaded property is set to true, and the onLoad event handler is invoked.

xmlData.onLoad = loadXML;

Here we set the onLoad event handler to call our function loadXML. Let's look at the function:

function loadXML(loaded) {
if (loaded) {
var xnRootNode:XMLNode = this;
trace( xnRootNode );
// number on buttons
nTotalButtons = xnRootNode.firstChild.childNodes.length;
// fill arrays
for (var i = 0; i astrImages.push(xnRootNode.firstChild.childNodes[i]
.childNodes[0].firstChild.nodeValue);
astrText.push(xnRootNode.firstChild.childNodes[i]
.childNodes[1].firstChild.nodeValue);
astrLinks.push(xnRootNode.firstChild.childNodes[i]
.childNodes[2].firstChild.nodeValue);
}
//everthing is loaded; we can move on
gotoAndStop(3);
}

This function runs only when the XML file has finished downloading and the loaded property is set to true.

If the XML file has completed loading, we execute the following code:

var xnRootNode:XMLNode = this;

We create an XML node variable (xnRootNode) and set it equal to this; this being the XML data that was just loaded.

nTotalButtons = xnRootNode.firstChild.childNodes.length;


At this point we need to talk about searching our XML to locate the values we need. This is a good time to revisit our navigation XML file.

In order to retrieve values from an XML file, we step through the family tree until you find the desired value. So in our code, xnRootNode.firstChild.childNodes.length;, the first child, is

Building RIAs with the Adobe Flash Platform

Building RIAs with the Adobe Flash Platform

By Andrew Muller

____________________

Andrew Muller

Andrew Muller Trainer, mentor, developer, blogger, and presenter, Andrew Muller has been involved with Rich Internet Applications in Australia since 2002. He's also a certified Adobe instructor for Flex, AIR, ColdFusion, Flash, and Connect, and an Ambassador and Community Expert for Adobe.

____________________


The Flash that you thought you knew has changed. It’s grown up.

In this article, I’ll explain some of the technologies that make up the Flash Platform, how they fit together, and how you can use them to build RIAs. Pay attention, because there will be a quiz at the end! The first 200 people to submit their answers will receive a copy of The Adobe Flash Platform ActionScript Reference for Rich Internet Application Development (that’s the print version) delivered to their door for free, thanks to Adobe.

The transformation that Flash has undergone has been occurring for some time, and many developers are aware of it. Every day I hear of a developer building a powerful new application for the Flash runtime that performs tasks like connecting to enterprise solutions powered by SAP or Oracle—and all with the full blessing of those vendors. Flash has evolved beyond the Skip Intro button for which we used to hate it, and has become ubiquitous—helping the browser perform way beyond the text rendering that it was first built for.

It was Macromedia (back in 2002, in their pre-Adobe acquisition days) who coined the term Rich Internet Application (RIA). The introduction of this term coincided with the release of a set of new custom components for Flash MX, thus supplying Flash developers with a set of UI components and providing them with a means to build their own. Flash already contained the ability to make a call to a remote server without forcing a page refresh, but with the release of ColdFusion MX that same year came Flash Remoting, which allowed applications built with Flash to pass serialized data to the server via AMF (Action Message Format).

These two products—custom components for Flash and Flash Remoting—and the synergy that could be experienced by combining them has since been expanded many times in the six-and-a-half years since they were first released. Recently, these technologies have been termed the Adobe Flash Platform. This umbrella term describes a collection of Adobe products, including multiple runtimes, development tools, and servers.


The Flash Runtime

The Flash Player is the cornerstone of the Adobe Flash Platform; it offers the developer a single, cross-platform runtime with all the capabilities of the Internet today. It supports more than just vector animation—it’s also a multimedia player. In fact, the majority of all online video today is delivered via Flash, with the capacity to offer true High Definition video via the same H.264 codec used in Blu-ray.

The runtime can communicate with application servers via web services, HTTP, and remote object calls without the need to perform a browser refresh. Additionally, the player has had VoIP capacity for many generations, and it’s possible to build and deploy collaborative applications with Flash that can include text chat, whiteboarding, and the sharing of desktops across operating systems.

A lot of effort has been invested into making sure that Flash-based RIAs work successfully for the wide variety of devices and operating systems. For example, Adobe and Google together have recently announced the successful implementation and development of a virtual user that Google uses to retrieve text from Flash content; this enables the content to appear in Google’s search results. Adobe is constantly improving the performance of accessibility within the Flash Player and its compatibility with screen readers for the visually impaired. Deep linking and browser history compatibility are features present in the open source Flex framework for Flash applications; these aim to eliminate the kind of navigation problems encountered with dynamic content in Ajax-based RIAs.

Adobe has successfully matured the Flash runtime in the short time that they’ve had it as a product. With each iteration, particularly Players 9 and 10, significant improvements in performance have occurred; Player 10 now offers hardware acceleration for advanced graphical effects. Flash Player 10 also introduces new functionality, including 3D effects, custom filters and effects, advanced text support, and dynamic streaming for improved video performance.

Flash Player 10 is the latest version of the browser plugin; it’s available for Windows, OS X, Linux, and Solaris. Flash Lite 3 is a scaled-down version of the runtime for use on mobile and handheld devices.



Look—up in the AIR!

And then there’s Adobe AIR—a new category of runtime that combines Flash Player 10 and WebKit (the web page rendering engine behind Safari and Chrome) into a stand-alone runtime capable of running offline applications. The runtime is available for Windows, OS X, and Linux.

Adobe AIR was introduced by Adobe mid-2008 after a lengthy public beta cycle. Developers can use their web application building skills to create apps for the desktop and deploy them via AIR. The AIR runtime incorporates functionality missing from the browser, such as access to the file system to create, delete, and maintain files and folders.

Adobe AIR supports drag and drop interaction with the operating system, network connection detection, and SQLite for local storage of data; the latter can be easily searched with standard SQL queries. If Acrobat Reader is installed on the client machine, AIR will utilize that software package’s capabilities for rendering PDFs. A version of the AIR runtime for mobile and handheld devices has been hinted at by Adobe, although there’s yet to be a release date announced.

Of course, all of these tools are free to download, and Flash Player is bundled as part of a Windows and OS X distribution.

Development Tools for RIAs

Flash CS4 Professional is the latest iteration of the Flash authoring environment. Originally an animation tool, the Flash IDE can also be used to program Flash movies using ActionScript, an ECMAScript-based object oriented programming language. It has the necessary tools for ActionScript authoring, including an ActionScript editor and an advanced debugger. Flash CS4 is both a tool for designers and developers, and while it’s possible to create whole applications with Flash, Adobe has created a framework for Flash applications called Flex (check out some of the Flex tutorials on sitepoint.com).

Originally released as an enterprise platform (with an enterprise price to match), Flex is now a free, open source framework for building applications to run within the Flash runtime. Flex applications are authored in a combination of two languages:

MXML, a declarative XML-based language in which tags represent classes within the framework; it’s principally used for UI layouts and behaviors, and ActionScript 3, an object-oriented language typically used for client logic. Developers with a Java background will find ActionScript intuitive and may be tempted to author with it entirely.

The Flex framework contains over 100 extensible UI components. It can be downloaded for free as part of the free Flex 3 SDK, which also contains a stand-alone compiler.

A number of open source frameworks have emerged to assist Flex application development. The most popular of these is Cairngorm, an open source project managed by Adobe. Others worth looking at include Mate, a tag-based, event-driven framework; and PureMVC, a lightweight ActionScript 3 framework for creating applications based on the model-view-controller concept.

While the Flex framework and Flex SDK are free, the Flex development tool, Flex Builder, is a commercial product (although it’s free for educational use). Flex Builder 3 is an Eclipse-based IDE, and is available as either a stand-alone application or as a plugin for Eclipse. There are versions of Flex Builder for both Windows and OS X, and a beta version is available for Linux.

Flex Builder supports the editing of MXML, ActionScript, and CSS files, including code completion, tag insight, and syntax coloring. It also includes a visual layout tool, to facilitate the positioning of components in a WYSIWYG environment.

Flex Builder is available in two editions, Standard and Professional. The Professional edition includes a charting library, performance profiling tools, and support for automated functional testing. Projects built with Flex Builder can be deployed either in the browser via the Flash Player, or as stand-alone applications via Adobe AIR.

Servers

A Flash application is able to retrieve data from a remote server via HTTP calls; this can be done with either of the Adobe tools mentioned above. With Flash MX, Macromedia introduced a once proprietary binary data transfer format for communication with an application server called Action Message Format (AMF); this has recently been made open source. AMF borrowed the means to describe the structure of data from the SOAP protocol; automatic translation of this format was provided with the Flash Remoting classes and service that was included in ColdFusion. AMF has also been reverse-engineered and is available for a number of application servers; AMFPHP, WebORB, and RubyAMF are examples of that reverse-engineering.

Adobe now also have an open source, Java remoting and web messaging technology that Flex and Adobe AIR applications can use to connect to Java server logic called BlazeDS. This uses the same AMF protocol mentioned above. BlazeDS integration has recently been added to the Spring framework to make Spring-powered RIAs with Flex front ends possible.

Adobe have additional server products that also support AMF; ColdFusion has been previously mentioned, while another is LiveCycle Data Services, which also includes Flex Messaging for real-time data push and publish/subscribe messaging.

The Adobe Flash Media Server group of products are also included within the Flash Platform. The Flash Media Interactive Server can be used to build Flash-based collaborative applications, which can include features like streaming Flash video, VoIP, chat, webcam chat, and online gaming. The Flash Streaming Media Server is capable of streaming both live and on-demand Flash video.


The Near Future

Adobe’s long-awaited technology preview, Thermo, was released to attendees at Adobe MAX in November 2008 under the new name, Flash Catalyst. This is an interaction design tool for RIAs that will be released as a public beta in the first half of this year. Flash Catalyst will import design comps created in Illustrator, Photoshop, or Fireworks, making use of a new interchange format introduced with all the CS4 design tools called FXG.

Flash Catalyst

Flash Catalyst can convert the design elements in the artwork into design and interactive elements for an RIA project with workflow; this gives it the ability for an interactive element like a scrollbar to go back to Illustrator for some design tweaks to occur. Flash Catalyst converts elements like buttons or scrollbars into Flex custom components. Interactions and timeline events are added visually to projects in Flash Catalyst, but in reality the application is creating the whole project as MXML. Under the hood, Flash Catalyst is another Eclipse-based application just like Flex Builder.

Flash Catalyst is already listed as a part of the Flash Platform; the MXML that it produces is incompatible with Flex 3, but will be compatible with the next version, Flex 4 (code-named Gumbo), which is in public beta. Flex 4 has graphical enhancements including an implementation of FXG, and customizable components.

Flash Catalyst in Detail

Another new project related to Flash that was released at Adobe’s annual developer conference MAX late last year was Alchemy; this is a research project that allows users to compile C and C++ code to run on Flash Player 10. There were quite a few good examples of how additional functionality could be added to Flash-based applications using existing libraries, including encryption, support for RAW digital photographs, and PDF creation.

Conclusion

Adobe’s Flash Platform offers the RIA developer a powerful, ubiquitous runtime in the Flash Player; within the browser it’s a case of code once, deploy everywhere, as there’s a version of the runtime for all major operating systems. The Flex open source framework gives developers the ability to build rich interactive applications to run in both the browser and on the desktop via Adobe AIR; it provides the ability to connect to data through a number of different connection types.

If you’re building a Rich Internet Application, and haven’t checked out the technologies that comprise the Adobe Flash Platform, then now is a good time to start. We’ll be publishing more articles on these topics over the coming months on sitepoint.com, so stay tuned!

In the mean time, test yourself on the contents of this article by taking the quiz. The first 200 people to submit their answers will receive a print copy of The Adobe Flash Platform ActionScript Reference for Rich Internet Application Development, delivered to their door for free, courtesy of Adobe. Take the quiz now!


____________________

Andrew Muller

Andrew Muller Trainer, mentor, developer, blogger, and presenter, Andrew Muller has been involved with Rich Internet Applications in Australia since 2002. He's also a certified Adobe instructor for Flex, AIR, ColdFusion, Flash, and Connect, and an Ambassador and Community Expert for Adobe.

____________________

Push Buttons In Photoshop


By Doug Cloud

Push buttons are a good, tactile addition to your Website. Not only can they enhance a clean, professional design, they can also add an element of tangibility, which can be important in the online environment.

This tutorial will show you how to make buttons that appear to "push down" when a visitor places their mouse pointer over them. While the steps below may seem excessive for making this kind of effect, it is important to note that this process creates a more crisp, clean, legible button image than those you will find proliferating the Web. Try it!

Step 1. Shape and Colour


Open Photoshop and create a new document that's 117px by 65px, resolution 72, in RGB mode, with a white background. Use the Zoom Tool (keystroke Z) and zoom in on your image by 400%. This will make working on the button easier.

Create a new layer and name it "Back", then take the Marquee Tool and draw a rectangular selection in the middle of the canvas. Make this selection 80 pixels long and 20 pixels wide (to see the size of your selection make sure the Info Palette is visible; if it isn't, go to Window > Info).

Choose the color you want the "Back" to be. In this tutorial I used a light sky blue (#0099CC). Make this your Foreground color and then hit Alt+Delete to fill the rectangle with the color. Finally, deselect (Ctrl+D).

Step 2. Button Up

Create a new layer, and name it "Button Up". Take your Pencil Tool from the tool bar and make sure the tip size is set to one pixel. Make your Foreground color black.

With your Pencil, draw a rectangle similar to the one on the left using the Back layer as a guide -- right along the top, and three pixels from the bottom.

Last of all, click the "eye" icon to turn off your Back layer, which will make it easier to do the next steps.

Step 3. Apply Gradient


Select your Magic Wand from the toolbar. In the Properties bar for the Wand tool make sure the Tolerance is set to 30, Contiguous is checked, and that Anti-aliased is off. Now select the inside of your rectangle.

Now click on your Gradient Tool in the tool bar, and make sure that Foreground to Background is selected in the Properties bar. Set your Foreground color to #51CEF8, and your Background color to #0E6D8D.

Draw your Gradient Tool from the bottom to the top, then deselect.

Step 4. Finish Button Up


Now take the Pencil again and use the same light blue color (#51CEF8) we used in Step 3 to draw a strip down the left side of your rectangle.

Next, use the dark blue color (#0E6D8D) from Step 3 to draw a strip along the bottom and up the right side of your rectangle.

Grab your "Button Up" layer and drag it down to the "Create a new layer" icon at the bottom of the Layers palette. Put this layer below the "Button Up" layer and name it "Button Down".

Turn the "Button Down" layer off for now by clicking the little "eye" icon next to it.


Step 5. Shadow

Create a new layer and place it below both your button layers. Name this one "Shadow".

Turn your "Back" layer on again by clicking the "eye" icon next to it. Use the Pencil to draw a "shadow" similar to mine using the dark blue color (#0E6D8D) from Step 3.

I turned off the "Button Up" layer so you can see the exact shape of the shadow I drew.

Here's how the shadow looks with the "Button Up" layer on.

Step 6. Finish Off

Now turn the "Button Up" layer off and turn the "Button Down" layer on. Select your Move Tool from the toolbar and press the "down" arrow key on your keyboard twice. Now turn this layer off and turn the "Button Up" layer back on.

Ok, that's it for making the buttons. Now let's create some text and then save the buttons for use on your Web page.

Step 7. Create Text

For the text, I used the Verdana font, size 10, in white with no anti-aliasing (when working with a font of this size I never use anti-aliasing). I also added a drop shadow to make the words stand out from the button a little more. You can add any words you like at this stage; perhaps use the names of the pages to which the buttons are going to link to (I'll use the word "About", as the button will like to my "About" page).

Your layers palette should resemble the one shown here. Notice I have the "Button Down" and "Background" layers turned off.

Now click on the small squares next to each of the visible layers to link them. Click on the small arrow in the upper right hand corner of the Layers palette and choose Merge Linked.

Tip: If you select a layer before you link it, the resulting merged layer will have that layer's name. For instance, on the left I've highlighted "About", and when all the linked layers are merged, the resulting layer is automatically named "About".


Step 8. Copying the File

Once you've merged the layers press the following keys in the order shown here:

  1. Ctrl+A to select all
  2. Ctrl+C to copy
  3. Ctrl+N to create new document
  4. Ctrl+V to paste

At the third step you can name your new document (for instance, as the file contains the About button in the "up" state, you might name it about_up).

Now highlight your buttons file (clicking on the title bar will highlight it) and press Ctrl+Alt+Z (to Undo) until you get back to where you were in the Layer palette example in Step 7.

Step 9. Button Down

Now we need to make the "down" state of our button.

Turn off the "Button Up" layer and turn on the "Button Down" layer. The first thing you'll need to do is move the word "About" so that when someone clicks the button on your Web page it will appear that both the button and the word "push" down.

Highlight the type layer that has the word About in it, select your Move Tool, and hit your down arrow key two times.

Now link the layers as you did in Step 7, and follow the directions in Step 8 to merge, copy, and paste into a new document. Name this new document about_down (or choose a name of your own).

Make sure you go back to your original button file and use Ctrl+Alt+Z to undo your changes back to the state in which your layers are not merged.

You should now have two separate documents -- one containing the about_up button,

and one containing the about_down button.

You will need to repeat these steps for each button you want to create. Remember to name each button accordingly. You can use different colors than the ones we used here -- just make sure your Back layer is always the same color as the background you'll be placing the buttons on.

Doug has been a commercial graphic designer for 23 years, and had his own comic strip for a while. He's been doing Web and graphic design work for the last 5 years.


Grungy Tech Effect

Grungy Tech Effect

By Adam Polselli

Create a cool texture that's kind of grungy, kind of techy, and works really well for collages and backgrounds.

Software Required: Adobe Photoshop 7.0

Step 1 - the New Document

Create a new document, 300x500, with a white background. Set your colors to the default by hitting the "D" key on your keyboard. You want black as your foreground and white as your background.

Next, go to FILTER > RENDER > CLOUDS.

Step 2 - Motion Blur

Go to FILTER > BLUR > MOTION BLUR, and use these settings:

Angle: 0
Distance: 55 pixels

Click OK. You should now have something that looks like this:

Step 3 - Liquify

Next go to FILTER > LIQUIFY. Select the "Shift Pixels Tool" from the left hand toolbar and keep the default settings, Brush size: 64 and Brush pressure: 50. Now, using quick, sweeping strokes, begin at the top of your image and sweep back and forth across it with slightly overlapping strokes. It should take about 8-10 overlapping strokes to cover the whole image. If you mess up, don't panic! Simply click the "REVERT" button on the right side of the window.

If you've completed this step correctly, you should get something similar to the image below. Don't try to be exact -- this is an experimental step you can have fun with!


Step 4 - Contrast

Now we need a little more contrast. Go to IMAGE > ADJUSTMENTS > BRIGHTNESS/CONTRAST and use the following settings:

Brightness: 15
Contrast: 55

Click OK, and you should have something like this:

Step 5 - A Little Colour

Now let's add a little color. We don't want to use too much, because we're trying to keep a sort of metallic, steely look, but we need enough color to add some interest. Go to IMAGE > ADJUSTMENTS > HUE/SATURATION (Ctrl + U) and select the "Colorize" checkbox. I used the following settings to give it the look of cold steel, but feel free to experiment.

Hue: 218
Saturation: 13
Lightness: 0

Click OK.

Step 6 - Accentuate Highlights

This step is optional -- I used it to accentuate the highlights and shadows. Simply go to IMAGE > ADJUSTMENTS > REPLACE COLOR. With the eyedropper tool, go to your image and select a pure black. Then, in the "Replace Color" window, change the "Lightness" to -40. Leave Hue and Saturation alone, and click OK.

Step 7 - Water Paper

Go to FILTER > SKETCH > WATER PAPER. Keep the default settings and click OK. There you have it! A cool, simple, and fun texture that you can use almost anywhere. Be sure to experiment with your own settings -- I guarantee you'll find something even better along the way. Now, if you'd like to use this as a corner background image on a Webpage, continue to the next step:

Step 8 - Prepare for Web

If you'd like to use the image you just created as a corner background on a Web page, simply select the Eraser Tool, grab a big 200 px feathered brush, and erase the area around the bottom and left or right side of the image. You should get a nice graphic that you can place in the corner of a Webpage. Enjoy experimenting!

When Adam isn't occupied with school work, he is busy with being an Advisor at the SitePoint Community Forums, adding to his design portfolio, and managing Get the Look and the rest of the Adam Polselli Network.