Foros del Web » Creando para Internet » Flash y Actionscript »

Flash-026 AS3 P.O.O. Button Class

Estas en el tema de Flash-026 AS3 P.O.O. Button Class en el foro de Flash y Actionscript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/11/2010, 14:51
Avatar de lucasmoyano  
Fecha de Ingreso: enero-2010
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 10
De acuerdo Flash-026 AS3 P.O.O. Button Class

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 boton 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.


Video:

http://www.youtube.com/watch?v=nelZkgLAS0c

Archivos del Tutorial:
http://www.megaupload.com/?d=R2CIDF5C

Mirrors:
http://rapidshare.com/#!download|121...-Button.zip|62
http://www.mediafire.com/?ldb6fv1vspyvkuq

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;
		}
	}
}

Etiquetas: actionscript, as3, class, flash, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:26.