Pages

Monday, August 1, 2011

AS3: A class to control button behavior & states

Here is a CButtonControl.as class that'll control the behavior of a movieclip (made in flash) and make it work like a button.

The movieclip should have atleast 4 frames with labels as:
  1. up
  2. over
  3. down
  4. disable

These labelled frames will work as different states of the button.

CODE
 package   
 {  
  import flash.display.MovieClip;   
  import flash.events.Event;  
  import flash.events.MouseEvent;  
  /**  
   * @file CButtonControl.as  
   * @author Abhishek Kumar  
   */  
  public class CButtonControl  
  {  
   private var Container:MovieClip = null;  
   public var proceed:Function;  
   private var objekt:Object = {};  
   public function CButtonControl(iReference:MovieClip)   
   {  
    Container = iReference;  
    initializeAssets();  
   }  
   private function initializeAssets():void  
   {  
    objekt.id = -1;  
    Container.visible = true;  
    Container.mouseChildren = false;  
    Container.gotoAndStop('disable');  
   }  
   public function initializeEvents():void  
   {  
    Container.buttonMode = true;  
    Container.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);  
    Container.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);  
    Container.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);  
    Container.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);  
   }  
   public function destroyEvents():void  
   {  
    Container.buttonMode = false;  
    Container.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);  
    Container.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);  
    Container.removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);  
    Container.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);  
    //Container.removeEventListener(MouseEvent.ROLL_OUT, onMouseOut);  
   }  
   private function onMouseDown(me:MouseEvent):void  
   {  
    Container.gotoAndStop('down');  
   }  
   private function onMouseUp(me:MouseEvent):void  
   {  
    Container.gotoAndStop('up');  
    (objekt.id == -1)? proceed() : proceed(objekt);  
   }  
   private function onMouseOver(me:MouseEvent):void  
   {  
    Container.gotoAndStop('over');  
   }  
   private function onMouseOut(me:MouseEvent):void  
   {  
    Container.gotoAndStop('up');  
   }  
   public function setLabel(iLabel:String, isHtml:Boolean=false):void  
   {  
    if(isHtml)  
     Container.caption.htmlText = iLabel;  
    else  
     Container.caption.text = iLabel;  
   }  
   public function embedFonts(bool:Boolean):void  
   {  
    Container.caption.embedFonts = bool;  
   }  
   public function hide():void  
   {  
    Container.visible = false;  
   }  
   public function show():void  
   {  
    Container.visible = true;  
   }  
   public function enable():void  
   {  
    initializeEvents();  
    Container.gotoAndStop('up');  
   }  
   public function disable():void  
   {  
    destroyEvents();  
    Container.gotoAndStop('disable');  
   }  
   public function set id(id:int):void  
   {  
    objekt.id = id;  
   }  
   public function get id():int  
   {  
    return objekt.id;  
   }  
  }  
 }  

No comments:

Post a Comment