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)