2008
Jun
05

Easiest way to make custom irregular shaped buttons using AS3, is extending the mx.controls.Image. Here is an example:

[-]View Code ACTIONSCRIPT
package com.comeks.components
{
import flash.events.*;
import mx.events.*;
import mx.controls.Image;
 
public class ImageButton extends Image
{
	private var outTransform:ColorTransform = new ColorTransform(1,1,1);
        private var overTransform:ColorTransform = new ColorTransform(.8,1,1);
        private var downTransform:ColorTransform = new ColorTransform(1,0.9,1);
 
     	private var _disabled:Boolean = false;
 
		public function ImageButton()
		{
			addEventListener(MouseEvent.MOUSE_OVER, mouseOver);			
			addEventListener(MouseEvent.MOUSE_OUT, mouseOut);			
			addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);		
			addEventListener(MouseEvent.MOUSE_UP, mouseUp);
			buttonMode = true;
		}
 
		public function disable():void
		{
			_disabled = true;
			transform.colorTransform = outTransform;
			alpha = 0.4;
			buttonMode = false;
		}
 
		public function enable():void
		{
			_disabled = false;
			transform.colorTransform = outTransform;
			alpha = 1.0;
			buttonMode = true;
		}
 
		public function isOver(event:MouseEvent):Boolean
		{
			return hitTestPoint(event.stageX, event.stageY, true);
		}
 
		private function mouseOut(evt:MouseEvent):void
		{
			if(!_disabled)
			{ 
				transform.colorTransform = outTransform;
			}
		}
 
		private function mouseOver(evt:MouseEvent):void
		{
			if(!_disabled)
			{	
				transform.colorTransform = overTransform;
			}
		}
 
		private function mouseDown(evt:MouseEvent):void
		{
			if(!_disabled)
			{ 
				transform.colorTransform = downTransform;
			}
		}
 
		private function mouseUp(evt:MouseEvent):void
		{
			if(!_disabled)
			{ 
				transform.colorTransform = outTransform;
				dispatchEvent( new MouseEvent(MouseEvent.CLICK));
			}
		}		
}
 
}

Use it like this:

[-]View Code ACTIONSCRIPT
[Bindable]
[Embed(source="assets/mini-trash.png")]
private var trashIcon:Class
 
var trashButton:ImageButton = new ImageButton();
trashButton.source = trashIcon;
trashButton.addEventListener(MouseEvent.CLICK, trashButtonClicked);			
addChild(trashButton);

 
close Reblog this comment
blog comments powered by Disqus


All rights reserved. © Copyright 2008 MikkoLehtinen.com