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

pasar esto a poo

Estas en el tema de pasar esto a poo en el foro de Flash y Actionscript en Foros del Web. Sigo peleado con la poo, no puedo hacer mis propias clases ya que tengo muchas dudas, espero me puedan ayudar. tengo este pequeño programa que ...
  #1 (permalink)  
Antiguo 10/01/2012, 10:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Busqueda pasar esto a poo

Sigo peleado con la poo, no puedo hacer mis propias clases ya que tengo muchas dudas, espero me puedan ayudar.

tengo este pequeño programa que mueve de un lado a otro "algo".

ese algo quiero que sea cualquier cosa (boton, textbox,checkbox,etc)

por eso quiero hacerlo orientado a objetos. les muestro mi codigo:

Código:
<fx:Script>
		<![CDATA[
			
			var dx:int = 10;
			
			public function evento()
			{
				addEventListener(Event.ENTER_FRAME,mover);
			}
			
			
			public function mover(e:Event)
			{
				boton.x += dx;
				
				
				if(boton.x > 400 || boton.x < -30)
					dx *= -1;
				
			}
			
			
		]]>
	</fx:Script>
	<s:Button id="boton" x="16" y="33" label="Button"/>
	<s:Button x="10" y="192" width="460" label="Emepzar" click="evento()"/>
funciona muy bien pero lo que yo quiero es esto:

si ven en la funcion mover, estoy escribiendo el nombre de instancia del objeto a mover y lo que yo quiero es que ese nombre se pase via un constructor.

alo que me refiero es que quiero que quien use esta clase simplemente al crear un nuevo objeto de mi clase pase por parametro el nombre de algun objeto (boton, textbox, etc) de la sig forma:

var objeto:MiClase = new MiClase("txtNombre");

ó

var objeto:MiClase = new MiClase("btn_boton1");

es por eso que quiero hacerlo orientado a objetos.

espero me puedan ayudar gracias


Edito: he creado una clase pero no se si esté bien, algun experto que la cheke por favor:

Código:
package
{
	import flash.display.Stage;
	import flash.events.Event;
	
	import spark.components.Button;
	import spark.components.Label;

	public class PP
	{
		private var label2:Label;
		private var dx:int = 10;		
		
		
		public function PP(etiqueta:Label)
		{
			this.label2 = etiqueta;
			label2.addEventListener(Event.ENTER_FRAME,mover);
			
			
		}
		
		
		public function mover(e:Event):void
		{
			
			label2.x += dx;
			
			if(label2.x > 400 || label2.x < 16)
				dx *= -1;
			
		}
		
		
		
	}
}
y la forma de utilizarla es:

Código:
	<fx:Script>
		<![CDATA[

public function poo(etiqueta:Label):void
			{
				var objeto:PP = new PP(etiqueta);
			}
			
			
			
		]]>
	</fx:Script>
	<s:Button id="boton" x="16" y="33" width="76" label="Button"/>
	<s:Button left="10" right="10" bottom="20" label="Emepzar" click="poo(etiqueta1)"/>

creo ke funciona muy bien pero por favor chekenla

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Edito2:

La he modificado para que acepte objetos en vez de Label creo que funciona muy bien, pero por favor critiquen mi clase para saber si ya lo he hecho bien o no

Código:
package
{
	import flash.display.Stage;
	import flash.events.Event;
	
	import spark.components.Button;
	import spark.components.Label;

	public class PP
	{
		private var objeto:Object;
		private var dx:int = 10;		
		
		
		public function PP(objeto:Object)
		{
			this.objeto= objeto;
			objeto.addEventListener(Event.ENTER_FRAME,mover);
			
			
		}
		
		
		public function mover(e:Event):void
		{
			
			objeto.x += dx;
			
			if(objeto.x > 400 || objeto.x < 16)
				dx *= -1;
			
		}
		
		
		
	}
}

y se utiliza de esta forma:

Código:
<fx:Script>
		<![CDATA[			
			
			public function poo(etiqueta:Object):void
			{
				var objeto:PP = new PP(etiqueta);
			}
			
			
			
		]]>
	</fx:Script>
	<s:Button id="boton" x="16" y="33" width="76" label="Button"/>
	<s:Button left="10" right="10" bottom="20" label="Emepzar" click="poo(textooo)"/>
	<s:Label id="etiqueta1" x="19" y="101" text="Label"/>
	<s:TextInput id="textooo" x="8" y="124" width="50"/>
en el evento click, se pone poo(nombre_del_objeto)

Última edición por devilboy9999; 10/01/2012 a las 11:45
  #2 (permalink)  
Antiguo 10/01/2012, 12:13
Avatar de ocesitaro  
Fecha de Ingreso: diciembre-2011
Ubicación: Carabayllo
Mensajes: 274
Antigüedad: 12 años, 11 meses
Puntos: 36
Respuesta: pasar esto a poo

en vez de un enterframe usa un timer, sino te va a consumer mucho recurso, usa un timer, detendo cuando llegue a tu x maximo y leugo vuelvelo a prender.

luego esta todo bien chevere
  #3 (permalink)  
Antiguo 10/01/2012, 12:20
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: pasar esto a poo

Cita:
Iniciado por ocesitaro Ver Mensaje
en vez de un enterframe usa un timer, sino te va a consumer mucho recurso, usa un timer, detendo cuando llegue a tu x maximo y leugo vuelvelo a prender.

luego esta todo bien chevere

perfecto, ahora me surge otra duda

que tal si en vez de pasar un objeto por uno quiero pasar todos.

osea algo asi:

Código:
var arreglo:Array = new Array("boton","etiqueta1","textooo");
pero si dejo mi clase asi como está me genera errores.

como modificarla para ke acepte N numero de objetos
  #4 (permalink)  
Antiguo 10/01/2012, 13:18
Avatar de ocesitaro  
Fecha de Ingreso: diciembre-2011
Ubicación: Carabayllo
Mensajes: 274
Antigüedad: 12 años, 11 meses
Puntos: 36
Respuesta: pasar esto a poo

puedes creer uan clase principal y luego otrs subclase en la subclase le envias el array y leugo recorres el array y al item le envias a la clase padre
  #5 (permalink)  
Antiguo 10/01/2012, 13:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: pasar esto a poo

para probar hice esto pero me marca error

Código:
			public function poo(etiqueta:Object):void
			{
				var objeto:PP = new PP(etiqueta);
			}
			
			
			public function todos():void
			{
				 
				 
				 for each(var cadena:Stringin arreglo)
				 {
					poo(cadena);
				 	trace(cadena);
				 }
				
			}
en el trace si me los muestra pero no me funciona

Etiquetas: actionscript
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 23:42.