View comments | RSS feed
Packageflash.display
Classpublic class SimpleButton
InheritanceSimpleButton Inheritance InteractiveObject Inheritance DisplayObject Inheritance EventDispatcher Inheritance Object

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

The SimpleButton class lets you control all instances of button symbols in a SWF file. After you create an instance of a button in the authoring tool, you can use the methods and properties of the SimpleButton class to manipulate buttons with ActionScript.

You can give a button an instance name in the Property inspector. SimpleButton instance names are displayed in the Movie Explorer and in the Insert Target Path dialog box in the Actions panel.

In ActionScript 3.0, you use the new SimpleButton() constructor to create a SimpleButton instance.

The SimpleButton class inherits from the InteractiveObject class.

View the examples

See also

InteractiveObject class
Core display classes


Public Properties
 PropertyDefined By
 InheritedaccessibilityProperties : AccessibilityProperties
The current accessibility options for this display object.
DisplayObject
 Inheritedalpha : Number
Indicates the alpha transparency value of the object specified.
DisplayObject
 InheritedblendMode : String
A value from the BlendMode class that specifies which blend mode to use.
DisplayObject
 InheritedcacheAsBitmap : Boolean
If set to true, Flash Player or Adobe AIR caches an internal bitmap representation of the display object.
DisplayObject
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
 InheritedcontextMenu : NativeMenu
Specifies the context menu associated with this object.
InteractiveObject
 InheriteddoubleClickEnabled : Boolean
Specifies whether the object receives doubleClick events.
InteractiveObject
  downState : DisplayObject
Specifies a display object that is used as the visual object for the button "Down" state —the state that the button is in when the user clicks the hitTestState object.
SimpleButton
  enabled : Boolean
A Boolean value that specifies whether a button is enabled.
SimpleButton
 Inheritedfilters : Array
An indexed array that contains each filter object currently associated with the display object.
DisplayObject
 InheritedfocusRect : Object
Specifies whether this object displays a focus rectangle.
InteractiveObject
 Inheritedheight : Number
Indicates the height of the display object, in pixels.
DisplayObject
  hitTestState : DisplayObject
Specifies a display object that is used as the hit testing object for the button.
SimpleButton
 InheritedloaderInfo : LoaderInfo
[read-only] Returns a LoaderInfo object containing information about loading the file to which this display object belongs.
DisplayObject
 Inheritedmask : DisplayObject
The calling display object is masked by the specified mask object.
DisplayObject
 InheritedmouseEnabled : Boolean
Specifies whether this object receives mouse messages.
InteractiveObject
 InheritedmouseX : Number
[read-only] Indicates the x coordinate of the mouse position, in pixels.
DisplayObject
 InheritedmouseY : Number
[read-only] Indicates the y coordinate of the mouse position, in pixels.
DisplayObject
 Inheritedname : String
Indicates the instance name of the DisplayObject.
DisplayObject
 InheritedopaqueBackground : Object
Specifies whether the display object is opaque with a certain background color.
DisplayObject
  overState : DisplayObject
Specifies a display object that is used as the visual object for the button over state — the state that the button is in when the mouse is positioned over the button.
SimpleButton
 Inheritedparent : DisplayObjectContainer
[read-only] Indicates the DisplayObjectContainer object that contains this display object.
DisplayObject
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
 Inheritedroot : DisplayObject
[read-only] For a display object in a loaded SWF file, the root property is the top-most display object in the portion of the display list's tree structure represented by that SWF file.
DisplayObject
 Inheritedrotation : Number
Indicates the rotation of the DisplayObject instance, in degrees, from its original orientation.
DisplayObject
 Inheritedscale9Grid : Rectangle
The current scaling grid that is in effect.
DisplayObject
 InheritedscaleX : Number
Indicates the horizontal scale (percentage) of the object as applied from the registration point.
DisplayObject
 InheritedscaleY : Number
Indicates the vertical scale (percentage) of an object as applied from the registration point of the object.
DisplayObject
 InheritedscrollRect : Rectangle
The scroll rectangle bounds of the display object.
DisplayObject
  soundTransform : SoundTransform
The SoundTransform object assigned to this button.
SimpleButton
 Inheritedstage : Stage
[read-only] The Stage of the display object.
DisplayObject
 InheritedtabEnabled : Boolean
Specifies whether this object is in the tab order.
InteractiveObject
 InheritedtabIndex : int
Specifies the tab ordering of objects in a SWF file.
InteractiveObject
  trackAsMenu : Boolean
Indicates whether other display objects that are SimpleButton or MovieClip objects can receive mouse release events.
SimpleButton
 Inheritedtransform : Transform
An object with properties pertaining to a display object's matrix, color transform, and pixel bounds.
DisplayObject
  upState : DisplayObject
Specifies a display object that is used as the visual object for the button up state — the state that the button is in when the mouse is not positioned over the button.
SimpleButton
  useHandCursor : Boolean
A Boolean value that, when set to true, indicates whether the hand cursor is shown when the mouse rolls over a button.
SimpleButton
 Inheritedvisible : Boolean
Whether or not the display object is visible.
DisplayObject
 Inheritedwidth : Number
Indicates the width of the display object, in pixels.
DisplayObject
 Inheritedx : Number
Indicates the x coordinate of the DisplayObject instance relative to the local coordinates of the parent DisplayObjectContainer.
DisplayObject
 Inheritedy : Number
Indicates the y coordinate of the DisplayObject instance relative to the local coordinates of the parent DisplayObjectContainer.
DisplayObject
Public Methods
 MethodDefined By
  
SimpleButton(upState:DisplayObject = null, overState:DisplayObject = null, downState:DisplayObject = null, hitTestState:DisplayObject = null)
Creates a new SimpleButton instance.
SimpleButton
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
EventDispatcher
 Inherited
Dispatches an event into the event flow.
EventDispatcher
 Inherited
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
Returns a rectangle that defines the area of the display object relative to the coordinate system of the targetCoordinateSpace object.
DisplayObject
 Inherited
getRect(targetCoordinateSpace:DisplayObject):Rectangle
Returns a rectangle that defines the boundary of the display object, based on the coordinate system defined by the targetCoordinateSpace parameter, excluding any strokes on shapes.
DisplayObject
 Inherited
Converts the point object from the Stage (global) coordinates to the display object's (local) coordinates.
DisplayObject
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Evaluates the display object to see if it overlaps or intersects with the obj display object.
DisplayObject
 Inherited
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
Evaluates the display object to see if it overlaps or intersects with the point specified by the x and y parameters.
DisplayObject
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Converts the point object from the display object's (local) coordinates to the Stage (global) coordinates.
DisplayObject
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 InheritedDispatched when Flash Player or an AIR application gains operating system focus and becomes active.EventDispatcher
 InheritedDispatched when a display object is added to the display list.DisplayObject
 InheritedDispatched when a display object is added to the on stage display list, either directly or through the addition of a sub tree in which the display object is contained.DisplayObject
 InheritedDispatched when a user presses and releases the main button of the user's pointing device over the same InteractiveObject.InteractiveObject
 InheritedDispatched when the user selects the context menu associated with this interactive object in an AIR application.InteractiveObject
 InheritedDispatched when Flash Player or an AIR application loses operating system focus and is becoming inactive.EventDispatcher
 InheritedDispatched when a user presses and releases the main button of a pointing device twice in rapid succession over the same InteractiveObject when that object's doubleClickEnabled flag is set to true.InteractiveObject
 InheritedDispatched when the playhead is entering a new frame.DisplayObject
 InheritedDispatched after a display object gains focus.InteractiveObject
 InheritedDispatched after a display object loses focus.InteractiveObject
 InheritedDispatched when the user presses a key.InteractiveObject
 InheritedDispatched when the user attempts to change focus by using keyboard navigation.InteractiveObject
 InheritedDispatched when the user releases a key.InteractiveObject
 InheritedDispatched when a user presses and releases the middle button of the user's pointing device over the same InteractiveObject.InteractiveObject
 InheritedDispatched when a user presses the middle pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when a user releases the pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when a user presses the pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when the user attempts to change focus by using a pointer device.InteractiveObject
 InheritedDispatched when a user moves the pointing device while it is over an InteractiveObject.InteractiveObject
 InheritedDispatched when the user moves a pointing device away from an InteractiveObject instance.InteractiveObject
 InheritedDispatched when the user moves a pointing device over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when a user releases the pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when a mouse wheel is spun over an InteractiveObject instance.InteractiveObject
 InheritedDispatched by the drag initiator InteractiveObject when the user releases the drag gesture.InteractiveObject
 InheritedDispatched by the target InteractiveObject when a dragged object is dropped on it and the drop has been accepted with a call to DragManager.acceptDragDrop().InteractiveObject
 InheritedDispatched by an InteractiveObject when a drag gesture enters its boundary.InteractiveObject
 InheritedDispatched by an InteractiveObject when a drag gesture leaves its boundary.InteractiveObject
 InheritedDispatched by an InteractiveObject continually while a drag gesture remains within its boundary.InteractiveObject
 InheritedDispatched at the beginning of a drag operation by the InteractiveObject that is specified as the drag initiator in the DragManager.doDrag() call.InteractiveObject
 InheritedDispatched during a drag operation by the InteractiveObject that is specified as the drag initiator in the DragManager.doDrag() call.InteractiveObject
 InheritedDispatched when a display object is about to be removed from the display list.DisplayObject
 InheritedDispatched when a display object is about to be removed from the display list, either directly or through the removal of a sub tree in which the display object is contained.DisplayObject
 InheritedDispatched when the display list is about to be updated and rendered.DisplayObject
 InheritedDispatched when a user presses and releases the right button of the user's pointing device over the same InteractiveObject.InteractiveObject
 InheritedDispatched when a user presses the pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when a user releases the pointing device button over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when the user moves a pointing device away from an InteractiveObject instance.InteractiveObject
 InheritedDispatched when the user moves a pointing device over an InteractiveObject instance.InteractiveObject
 InheritedDispatched when the value of the object's tabChildren flag changes.InteractiveObject
 InheritedDispatched when the object's tabEnabled flag changes.InteractiveObject
 InheritedDispatched when the value of the object's tabIndex property changes.InteractiveObject
Property Detail
downStateproperty
downState:DisplayObject  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Specifies a display object that is used as the visual object for the button "Down" state —the state that the button is in when the user clicks the hitTestState object.


Implementation
    public function get downState():DisplayObject
    public function set downState(value:DisplayObject):void

See also

enabledproperty 
enabled:Boolean  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

A Boolean value that specifies whether a button is enabled. When a button is disabled (the enabled property is set to false), the button is visible but cannot be clicked. The default value is true. This property is useful if you want to disable part of your navigation; for example, you might want to disable a button in the currently displayed page so that it can't be clicked and the page cannot be reloaded.


Implementation
    public function get enabled():Boolean
    public function set enabled(value:Boolean):void
hitTestStateproperty 
hitTestState:DisplayObject  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Specifies a display object that is used as the hit testing object for the button. For a basic button, set the hitTestState property to the same display object as the overState property. If you do not set the hitTestState property, the SimpleButton is inactive — it does not respond to mouse and keyboard events.


Implementation
    public function get hitTestState():DisplayObject
    public function set hitTestState(value:DisplayObject):void

See also

overStateproperty 
overState:DisplayObject  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Specifies a display object that is used as the visual object for the button over state — the state that the button is in when the mouse is positioned over the button.


Implementation
    public function get overState():DisplayObject
    public function set overState(value:DisplayObject):void

See also

soundTransformproperty 
soundTransform:SoundTransform  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

The SoundTransform object assigned to this button. A SoundTransform object includes properties for setting volume, panning, left speaker assignment, and right speaker assignment. This SoundTransform object applies to all states of the button. This SoundTransform object affects only embedded sounds.


Implementation
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void

See also

trackAsMenuproperty 
trackAsMenu:Boolean  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Indicates whether other display objects that are SimpleButton or MovieClip objects can receive mouse release events. The trackAsMenu property lets you create menus. You can set the trackAsMenu property on any SimpleButton or MovieClip object. If the trackAsMenu property does not exist, the default behavior is false.

You can change the trackAsMenu property at any time; the modified button immediately takes on the new behavior.


Implementation
    public function get trackAsMenu():Boolean
    public function set trackAsMenu(value:Boolean):void
upStateproperty 
upState:DisplayObject  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Specifies a display object that is used as the visual object for the button up state — the state that the button is in when the mouse is not positioned over the button.


Implementation
    public function get upState():DisplayObject
    public function set upState(value:DisplayObject):void

See also

useHandCursorproperty 
useHandCursor:Boolean  [read-write]

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

A Boolean value that, when set to true, indicates whether the hand cursor is shown when the mouse rolls over a button. If this property is set to false, the arrow pointer cursor is displayed instead. The default is true.

You can change the useHandCursor property at any time; the modified button immediately uses the new cursor behavior.


Implementation
    public function get useHandCursor():Boolean
    public function set useHandCursor(value:Boolean):void
Constructor Detail
SimpleButton()Constructor
public function SimpleButton(upState:DisplayObject = null, overState:DisplayObject = null, downState:DisplayObject = null, hitTestState:DisplayObject = null)

Language Version : ActionScript 3.0
Runtime Versions : AIR 1.0, Flash Player 9

Creates a new SimpleButton instance. Any or all of the display objects that represent the various button states can be set as parameters in the constructor.

Parameters
upState:DisplayObject (default = null) — The initial value for the SimpleButton up state.
 
overState:DisplayObject (default = null) — The initial value for the SimpleButton over state.
 
downState:DisplayObject (default = null) — The initial value for the SimpleButton down state.
 
hitTestState:DisplayObject (default = null) — The initial value for the SimpleButton hitTest state.
Examples How to use examples
SimpleButtonExample.as

The following example uses the SimpleButtonExample class, which in turn uses the CustomSimpleButton class, and this class then instantiates four ButtonDisplayState objects. The result is a button that is created in the shape of a square, whose background color changes based on the mouse state by overriding instance properties of the SimpleButton class. This is accomplished by performing the following steps:
  1. In the SimpleButtonExample() constructor, a new CustomSimpleButton object of type SimpleButton, called button, is created, which calls the CustomSimpleButton constructor method. The button object is the added to the display list. The button's color and size are determined in the steps that follow.
  2. In the CustomSimpleButton class, instance properties are declared that are later used to control the size and background color of button, based on the state it is in (orange in the normal state, dark yellow in the mouse over state, an light blue in the mouse down state). In all of the button's states, the size of the square is set to 80 pixels by using the size property.
  3. The constructor function for the CustomSimpleButton class sets the downState, overState, upState, hitTestState, and useHandCursor properties with four instances of the ButtonDisplayState class.
  4. In the ButtonDisplayState class, the constructor sets the value of the square's size and background color and calls the draw() method.
  5. The draw() method redraws the square with the size and background color set in the constructor based on the button's state.
package {
    import flash.display.Sprite;

    public class SimpleButtonExample extends Sprite {
        public function SimpleButtonExample() {
            var button:CustomSimpleButton = new CustomSimpleButton();
            addChild(button);
        }
    }
}

import flash.display.DisplayObject;
import flash.display.Shape;
import flash.display.SimpleButton;

class CustomSimpleButton extends SimpleButton {
    private var upColor:uint   = 0xFFCC00;
    private var overColor:uint = 0xCCFF00;
    private var downColor:uint = 0x00CCFF;
    private var size:uint      = 80;

    public function CustomSimpleButton() {
        downState      = new ButtonDisplayState(downColor, size);
        overState      = new ButtonDisplayState(overColor, size);
        upState        = new ButtonDisplayState(upColor, size);
        hitTestState   = new ButtonDisplayState(upColor, size * 2);
        hitTestState.x = -(size / 4);
        hitTestState.y = hitTestState.x;
        useHandCursor  = true;
    }
}

class ButtonDisplayState extends Shape {
    private var bgColor:uint;
    private var size:uint;

    public function ButtonDisplayState(bgColor:uint, size:uint) {
        this.bgColor = bgColor;
        this.size    = size;
        draw();
    }

    private function draw():void {
        graphics.beginFill(bgColor);
        graphics.drawRect(0, 0, size, size);
        graphics.endFill();
    }
}




 


Comments


harikj said on Jun 18, 2007 at 12:40 AM :
I was able to use the above mentioned package. But the hitarea is more than what is specified. How can this be controlled.
tderich said on Jun 20, 2007 at 2:26 PM :
This is working correctly as coded. To "control it" try this variation:
public function CustomSimpleButton() {
downState = new ButtonDisplayState(downColor, size);
overState = new ButtonDisplayState(overColor, size);
upState = new ButtonDisplayState(upColor, size);
hitTestState = new ButtonDisplayState(upColor, size);
useHandCursor = true;
}

or replace the hitTestState property with this one:

hitTestState = new ButtonDisplayState(upColor, size / 2);
harikj said on Jul 4, 2007 at 5:56 AM :
Even when I tried

hitTestState = new ButtonDisplayState(upColor, size / 2);

the hitarea is correct widthwise, but heightwise its still double of what its supposed to be.
Bilyk said on Sep 2, 2007 at 10:24 AM :
I'm having trouble with creating a menu. I'm trying to have nested SimpleButtons, but the children don't receive events. I set trackAsMenu to true, but that doesn't seem to help.
TessandraFae said on Oct 1, 2007 at 2:33 PM :
Ok, I've created a button using this, and added a drop and bevel filter to it.
Now I need to add an icon or Text on top of it, not affected by the filters.
How do I add an icon on top of the button in code?

Preferably in a Template Pattern please.
adbe_paul said on Oct 2, 2007 at 2:28 PM :
What you're wanting to do is starting to go beyond the ability of a SimpleButton.

The SimpleButton class really exists to support the Button library symbols that you create in the Flash authoring tool. If you want something with multiple layers and filters applied to some of them, you'd be better off creating a display object to serve as a button.

You'll want to use a display object container such as a Sprite to surround all the graphic parts (or a Movie Clip if you're creating it visually in Flash). The structure will be something like this:

Sprite (or MovieClip)
-- icon/text/unfiltered content (each as a child of the parent container)
-- background or image to which filter is applied (also a child of the container)

Then if you want to apply the filters using ActionScript, you'd apply them only to the child object that you want filtered, but in writing the code for the click event (or other events) you'd add event listeners to the container object.
TessandraFae said on Oct 2, 2007 at 4:15 PM :
So if I use a Sprite/Movieclip object as my button, can I implement a button's behavior, like over, up, and down states?

Can I do something like this?

class myButton extends Sprite implements SimpleButton() {
}
TessandraFae said on Oct 3, 2007 at 11:09 AM :
Please disregard the class implementation question.
I figured out that the LabelButton class (which inherits all behavior from the BaseButton class) has all the behaviors and skin flexibility I needed.
Thank you for your help though!
adbe_paul said on Oct 3, 2007 at 11:57 AM :
Really, the easiest way to accomplish what you're describing is to just create the button visually in Flash. I'm assuming that you can't or don't want to do that for some reason.

You can't use "implements SimpleButton" because SimpleButton is a class, not an interface.

You can easily use the *events* that SimpleButton provides in a Sprite, because both SimpleButton and Sprite are subclasses of the InteractiveObject class, and the events like click, over, up, etc. are inherited from InteractiveObject. However, for a Sprite it does take a bit more work to implement different visual states for up, over, and down. This is because SimpleButton adds the overState, upState, and downState properties that automatically "wire up" the visual changes with the mouse interaction. For a Sprite, you have do do that work yourself. You would just write functions that change the content of the Sprite (e.g. swaps out one background image for another one, or applies or removes a filter). You would then register those functions as listeners to the appropriate events of the Sprite.

Another approach would be to use a SimpleButton and Sprites together to accomplish the desired effect. For instance, if the button background should change depending on the state, you could create a Sprite for each state, with the icon and text on top and the background beneath. Then you could assign those Sprite instances to the upState, overState, and downState properties of the SimpleButton instance.
john anon said on Mar 25, 2008 at 2:51 PM :
Hi, this is all well and good but i prefer to program in Flash visually then code it up to do what I want. The problem I have with simplebutton is how do I get the following to work? i.e.

[code]
Button1_btn.addEventListener(MouseEvent.CLICK, onClickedButton1);

function onClickedButton1(event : MouseEvent) : void
{
trace(event.target);
}
[/code]

why does this just give me [object simpleButton] and not 'Button1_btn' like with movieClips?

Its really annoying not being able to know which button called the function, or have I just to use movieClips?

Thanks

John.
harikj said on Mar 27, 2008 at 8:32 PM :
Hi John,

You can access the button instance by giving it as

trace(event.currentTarget);

which would give you the instance of the button.

target would refer to the listener object
nolty said on Mar 28, 2008 at 11:53 AM :
Hi John -- everything that inherits from DisplayObject has a name property, so I think

trace(event.target.name)

will give you what you want -- Bob
mykal23 said on Apr 17, 2008 at 10:47 AM :
john anon,

Event.target when used in actionscript 3.0 code returns the specific class object that the listener is targeted to. You can use the properties and methods available to that class object to manipulate the targeted object.

I myself expected what we used to get in actionscript 2.0 but I've grown to enjoy being able to know the object type since I can then know immediately what object properties and methods are available to be manipulated.

So what you really want is the instance name of your targeted object which corresponds to the 'name' property of a [SimpleButton] object. This can simply be referenced by using event.target.name.

I personally now much rather having the object returned as the target(or event.currentTarget) than the name of the instance since you don't have to add code to do any type checking to see what methods are available that can be applied to the object.
No screen name said on May 4, 2008 at 1:32 AM :
I don't understand mean of soundTransform and trackAsMenu properties.
How I can use it?
DrewLeSueur said on May 9, 2008 at 1:10 PM :
I am making a banner ad that has a SimpleButton across the whole thing.
I have actionscript generate graphics dynamically on the stage. My problem is that wherever those graphics are, the click button does not work!

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/SimpleButton.html