Comunidad de diseño web y desarrollo en internet

Videotutorial: Crear botones reutilizables en Actionscript 3

En el videotutorial anterior vimos como crear una clase Boton, pero en la forma en que lo hicimos tendríamos que adaptar su código a los proyectos que tengamos.

Por ejemplo, habíamos hecho que al hacer click en el botón redireccione a una página web, si quisiéramos que redireccione a un número de fotograma, tendríamos que modificar el código de la clase.

En esta oportunidad vamos a crear una clase Button que sea reutilizable y adaptable a todos los proyectos que tengamos.

Para lograr esto vamos a separar la funcionalidad de la estética.

Código para botones adaptables a cualquier proyecto en Actionscript 3




Extensión de la clase Button reutilizable todo proyecto


Código :

package ar.com.lucasmoyano.buttons
{
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.media.Sound;

   public class Button extends MovieClip
   {
      private var content:MovieClip;
      private var indexPressed:int;
      private var flag:Boolean;
      private var soundMouseOver:Sound;
      private var soundMouseOut:Sound;
      private var soundMouseDown:Sound;
      private var soundMouseUp:Sound;
      
      public function Button(_content:MovieClip = null, _soundMouseUp:Sound = null, _soundMouseOver:Sound = null, 
                        _soundMouseOut:Sound = null, _soundMouseDown:Sound = null):void
      {
         addEventListener(Event.ADDED_TO_STAGE, onAddedStage);
         content = _content;
         soundMouseOver = _soundMouseOver;
         soundMouseOut = _soundMouseOut;
         soundMouseDown = _soundMouseDown;
         soundMouseUp = _soundMouseUp;
         flag = false;
      }
      
      private function onAddedStage(e:Event):void
      {
         content.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
         try
         {
            indexPressed = content.currentLabels[0].frame;
         }
         catch (error:Error)
         {
            trace("Class Button - Error: In the MovieClip content, enter a label name to Frame");
         }
         content.mouseChildren = false;
         content.buttonMode = true;
         content.stop();
         addChild(content);
      }
      
      private function onMouseOver(e:MouseEvent):void
      {
         content.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
         content.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
         content.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
         flag = true;
         if (content.currentFrame == 1)
            content.addEventListener(Event.ENTER_FRAME, onEnterFrame);
         if (soundMouseOver != null)
            soundMouseOver.play();
      }
      
      private function onMouseOut(e:MouseEvent):void
      {
         content.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
         content.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
         content.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
         flag = false;
         if (soundMouseOut != null)
            soundMouseOut.play();
      }
      
      private function onMouseDown(e:MouseEvent):void
      {
         content.gotoAndStop(indexPressed);   
         if (soundMouseDown != null)
            soundMouseDown.play();   
      }
      
      private function onMouseUp(e:MouseEvent):void
      {
         content.play();
         if (soundMouseUp != null)
            soundMouseUp.play();
      }
      
      private function onEnterFrame(e:Event):void
      {               
         if (content.currentFrame < indexPressed)
         {
            if (flag)
            {
               if (content.currentFrame < indexPressed - 1)
                  content.nextFrame();
            }
            else
               content.prevFrame();
         }
         
         if (content.currentFrame == 1)
            content.removeEventListener(Event.ENTER_FRAME, onEnterFrame);            
      }
      
      
      // GETTERS AND SETTERS
      public function get Content():MovieClip
      {
         return content;
      }
      
      public function set Content(value:MovieClip):void
      {
         content = value;
      }
      
      public function get SoundMouseOver():Sound
      {
         return soundMouseOver;
      }
      
      public function set SoundMouseOver(value:Sound):void
      {
         soundMouseOver = value;
      }
      
      public function get SoundMouseOut():Sound
      {
         return soundMouseOut;
      }
      
      public function set SoundMouseOut(value:Sound):void
      {
         soundMouseOut = value;
      }
      
      public function get SoundMouseDown():Sound
      {
         return soundMouseDown;
      }
      
      public function set SoundMouseDown(value:Sound):void
      {
         soundMouseDown = value;
      }
      
      public function get SoundMouseUp():Sound
      {
         return soundMouseUp;
      }
      
      public function set SoundMouseUp(value:Sound):void
      {
         soundMouseUp = value;
      }
   }
}


Archivos del Tutorial

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate