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
Por deuteros1991 el 16 de Marzo de 2011
Yo cuando escribo boton. solo me aparece en la biblioteca boton.
Mientras que a ti te aparece:
Exportar: boton
Exportar: so1
Exportar: so2
Es en el minuto 2:48.
a mi no me aparece el exportar antes que el nombre.