YOUR FEEDBACK
duwei wrote: 1. Low hourly rate + high quality. 2. Top Adobe Flex outsourcing service provid...


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
MXDJ TOP LINKS YOU MUST CLICK ON !


Skinning the V2 ProgressBar Component, Part 2
Skinning SimpleButton instead of Button

In Part One of this two-part article ("Skinning the V2 ProgressBar component " MXDJ vol 3 issue 4) we did what we set out to do, but I just can't bear to leave the skinning-a-Button issue unresolved.

The warning at the beginning of last month's article pointed out that the Button component is surprisingly difficult to skin because its skin is made up of code, not graphics. As a last exercise, then, let's take a quick look at an alternative approach: skinning SimpleButton instead of Button.

The SimpleButton class is the superclass of Button, and is accordingly less complex. Specifically, SimpleButton instances cannot be resized and do not have text labels - which makes them easy to skin. Follow these steps to skin a SimpleButton instance:

  1. Create a new Flash document (.fla file).
  2. Drag a Button instance to the stage and then delete it. This adds the Button component to the document Library.
  3. Create four movie clips, named up, over, down, and icon, with Linkage Identifiers set to "up", "over", "down", and "icon", respectively.
  4. In the up movie clip, create a graphic that represents the button in an idle state.
  5. In the over movie clip, create a graphic that represents the button when the mouse pointer is above it.
  6. In the down movie clip, create a graphic that represents the button when it is pressed.
  7. In the icon movie clip, create a graphic that will appear in the middle of the button in all states.
  8. Select Frame 1, Layer 1.
  9. Add the following code to the Actions panel:

    import mx.controls.*;

    var initObj = {falseUpSkin:"up",
    falseDownSkin:"down",
    falseOverSkin:"over"};

    initObj.falseUpIcon = "icon";
    initObj.falseDownIcon = "icon";
    initObj.falseOverIcon = "icon";
    initObj.trueUpIcon = "icon";
    initObj.trueDownIcon = "icon";
    initObj.trueOverIcon = "icon";

    // Cast the object returned by createClassObject() to SimpleButton.
    var sButton:SimpleButton = SimpleButton(
    this.createClassObject(SimpleButton,
    "sButtonInstance",
    0,
    initObj));
    sButton.move(250, 200);
  10. To export the movie, choose Control > Test Movie.
In the preceding steps, we created the SimpleButton instance with code (via createClassObject()) because there is no SimpleButton visual component included in the Flash MX 2004 Components panel. It is theoretically possible to subclass SimpleButton and use the subclass to create a component that could be added to the Components panel, but doing so is outside the scope of this article. For information on creating components, see "Further Study," below.

The SimpleButton class is not the only alternative to the Button component. The CustomButton class can also be skinned with graphical movie clips. CustomButton offers the additional features of resizability and a text label. Note, however, that a CustomButton instance can be resized along one axis only - either horizontally or vertically. Accordingly, the CustomButton skin is structured much like the ProgressBar skin; it has two end caps for the edges of the button and a middle section that is stretched between the caps. You can use the SimpleButton skinning technique described above to skin a CustomButton instance. Of course, you'll have to use the CustomButton skin properties instead of the SimpleButton skin properties. For reference, here is a list of CustomButton's skin properties:

  • falseUpSkinL
  • falseUpSkinM
  • falseUpSkinR
  • falseDownSkinL
  • falseDownSkinM
  • falseDownSkinR
  • falseOverSkinL
  • falseOverSkinM
  • falseOverSkinR
  • trueUpSkinL
  • trueUpSkinM
  • trueUpSkinR
  • trueDownSkinL
  • trueDownSkinM
  • trueDownSkinR
  • trueOverSkinL
  • trueOverSkinM
  • trueOverSkinR
  • falseDisabledSkinL
  • falseDisabledSkinM
  • falseDisabledSkinR
  • trueDisabledSkinL
  • trueDisabledSkinM
  • trueDisabledSkinR
In the preceding property names, "false" means that the button is not in a "toggled on" state, while "true" means that the button is in a "toggled on" state. Non-toggle buttons (i.e., normal buttons) use the "false" skins only. The letter "L" means left cap, "M" means middle, stretching section, and "R" means right cap.

Note, however, that rather than relying on the above list of CustomButton skin properties you should always consult the actual source code for the CustomButton class to verify which skin properties it supports. Different versions of the class may support different properties. The source code also contains a brief description for each skin element. The source file for CustomButton is located here:

  • Windows: \Program Files\Macromedia\Flash MX 2004\[LANGUAGE_CODE]\First Run\Classes\mx\controls\CustomButton.as
  • Macintosh: HD/Applications/Macromedia Flash MX 2004/First Run/Classes/mx/controls/CustomButton.as
About Colin Moock
Colin Moock is an independent web guru with a passion for networked creativity and expression. He is author of the world-renowned guides to Flash programming, "ActionScript for Flash MX: The Definitive Guide" (O'Reilly & Associates, 2003, 2001) and "Essential ActionScript 2.0" (O'Reilly & Associates, 2004). A web professional since 1995, Moock runs one of the web's most venerable Flash developer sites, www.moock.org. He spends most of his time pursuing his cardinal interest, multiuser application development, and working on Unity, moock.org's complete commercial framework for creating and deploying multiuser applications for Macromedia Flash.

LATEST FLEX STORIES & POSTS
I spoke on a panel at Mashup Camp this week on why Ajax Standards matter. I was quoted by Doug Henschen of Intelligent Enterprise as saying that we are locked in a struggle for the soul of the web, so I thought I would expand on that theme. Just because the web has been open so far doe...
Adobe and ARM are gonna put Flash Player 10 and AIR, the stuff of web video and rich Internet apps, on ARM widgets by the second half of next year. They mean phones, set-tops, MIDs, TVs, car mojo and personal media devices, which have so far only had access to Flash Lite, not the best ...
This is my final blog from the Adobe MAX 2008 conference.
New releases of Flex software were announced at MAX. How Flash Catalyst works.
Notes from the openning day of Adobe MAX 2008
Of all domestic air carriers, I like Continental the most. They showed Mamma Mia and the food was bearable. Last month, I was in the air for 14 hours flying to Japan, and now the trip across the USA is a piece of cake. I have only carry luggage with me. This small bag has all the cloth...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE