Comunidad de diseño web y desarrollo en internet online

Cambiar Texto Dinamico con Clases

Citar            
MensajeEscrito el 17 Nov 2008 04:05 am
Hola todos.

Mi pregunta es la si hay alguna manera de hacer referencia a un objeto de una pelicula desde una clase(archivo .as).

Ejemplo: Tengo una pelicula con un campo dinamico con el nombre de instancia miTexto y tengo un archivo de clases llamado miClase.as con el codigo siguiente:

Código :

package clases  
{
   public class miClase 
   { 
      public static var Numero_Generado:Number = 0;
        function miClase() 
        { } 
         
        public function getNumero() : void
        { 
          Numero_Generado = Math.round((Math.random()*1000)); 
        miTexto.text = String(Numero_Generado); // Esto es lo que quiero hacer
        } 
   }        
}


Lo que quiero es asignar desde la clase un valor al objeto en la pelicula, es posible? como se puede hacer?

Este es un ejemplo simplicado de lo que quiero hacer, se que puedo poner a la funcion que devuleva un valor, y con el return devolverlo, y en la pelicula solo deberia poner miTexto = miclase.GetNumero();. Pero no es lo que quiero.

Espero ansioso su respuesta. Gracias. :lol:

Por MasterXP

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Nov 2008 07:38 am
Tiens varias opciones
1.-Si tu Clase extiende de DisplayObject y está añadido a la displayList, puede usar "parent"
2.-Si no es así, puedes mandarle como argumento de la clase, "miTexto", y guardarla en una variable. Luego en la función getNumero usar dicha variable
3.-Aún así, sigo pensando que tu opción que no quieres hacer de devolver un valor e igualar miTexto.text a ese valor es la ocrrecta pensando en OOP en el sentido de que "lo suyo" es que algo que pertenece a unc Clase sea sólo modificado desde esa clase

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Nov 2008 04:55 am
Hola eliseo2, gracias por tu respuesta rapida. la verdad no entendi mucho lo que me explicaste en el paso 1 y 2, pero me hiciste abrir los ojos con lo de la manera correcta de la OOP.

Gracias :)

Por MasterXP

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Nov 2008 10:08 am
No eran dos pasos, sino dos opciones. Vamos, imaginemos dos Clases, una "extenderá" de MovieClip, así que podremos usar "parent". La otra NO, así que guardamos en una variable el "padre"

Código ActionScript :

package  
{
   import flash.display.DisplayObject;
   import flash.display.MovieClip;
   
   public class Clase1 extends MovieClip 
   {
      public function Clase1() 
      {
      }
      public function cambiarTexto(texto:String):void{
                     MovieClip(parent).texto1.text = texto;
                 }
   }
}

Código ActionScript :

package  
{
   import flash.display.DisplayObject;
   import flash.display.MovieClip;
   
   public class Clase2 
   {
        private var _padre:DisplayObject;
      public function Clase2(padre:DisplayObject) 
      {
         _padre = padre;
      }
      public function cambiarTexto(texto:String):void{
                   MovieClip(_padre).texto2.text = texto;
           }
   }
}


Nuestra función Main puede ser

Código ActionScript :

package  
{
   import flash.display.MovieClip;
   import flash.text.TextField;
   
   public class Main extends MovieClip 
   {
                //declaramos texto1 y texto2
      public var texto1:TextField = null;
      public var texto2:TextField = null;
      
      public function Main() 
      {
         var clase1:Clase1 = new Clase1();
         var clase2:Clase2 = new Clase2(this); //<--al crear clase2, le pasamos "this"

         addChild(clase1); //<--la clase 1 la tenemos que añadir a la DisplayList

                        //creamos los textos
         texto1 = new TextField();
         texto1.y = 20;

         texto2 = new TextField();
         texto2.y = 50;
         addChild(texto1);
         addChild(texto2);
         
                        //lamamos a los métodos de las clases
         clase2.cambiarTexto("Hola Mundo");
         clase1.cambiarTexto("Adiós Mundo");
      }
   }
}


Aunque IMPORTANTE: no es lo más de lo más ortodoxo en OOP

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Nov 2008 04:43 am
Hey eliseo2 eres un Genio hombre, ahora si me quedo todo claro y bien explicadito, lo voy a probar ahora haber que tal me va.

Gracias gran guru ^^ :)

Por MasterXP

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Nov 2008 07:45 am
Tmeister da otra solución en este tip
Volvemos a repetir que no es OOP demasiado ortodoxo, pero funciona ^^

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.