Comunidad de diseño web y desarrollo en internet online

Comunicación entre clases

Citar            
MensajeEscrito el 10 Feb 2013 09:58 pm
Hola, tengo en el escenario un cuadrado asociado a la clase cubo, y lo llame cubo1
package
{

import flash.display.MovieClip;
import flash.events.MouseEvent;

public class cubo extends MovieClip
{
public var contacto:Boolean;

public function cubo()
{
trace("la funcion cubo esta activa");
contacto = true;
this.addEventListener(MouseEvent.MOUSE_DOWN,presionado);
}

private function presionado(event:MouseEvent)
{
trace("me has presionado");
}
}
}

en el escenario tambien coloque un circulo llamado jefe y lo asocie a la clase Main

package
{

import flash.display.MovieClip;
import flash.events.MouseEvent;
import cubo;

public class Main extends MovieClip
{
public var orientacion:String;

public function Main()
{
trace("la funcion Main esta activa");
orientacion="X";
}

}
}

lo único que necesito es que alguien me explique por favor como hago para desde la clase cubo obtener la variable orientación de la clase Main, y como desde la clase Main obtengo el valor de la variable contacto de la clase cubo. Muchísimas gracias por la atención prestada y la ayuda que me puedan brindar.

Por maklister

6 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Feb 2013 11:33 am
Hola, espero que esto te sirva, para que lo entiendas un poco mejor, está montado de la siguiente forma:
Main es la clase principal de tu aplicación y desde allí creamos una instancia a la clase Cubo.
Main.as

Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   public class Main extends MovieClip
   {
      private var orientacion:String;
      private var _cubo:Cubo;
      public function Main()
      {
         trace("la funcion Main esta activa");
         orientacion = "X";
         _cubo = new Cubo(this);
         this.addChild(_cubo);
         trace("obtengo el valor de contacto " + _cubo.getContacto());
      }
      public function getOrientacion():String
      {
         return orientacion;
      }
   }
}

Cubo.as

Código ActionScript :

package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
   public class cubo extends MovieClip
   {
      public var contacto:Boolean;
      private var father:Main;
      public function cubo(_father:Main)
      {
         father = _father;
         trace("la funcion cubo esta activa");
         contacto = true;
         this.addEventListener(MouseEvent.MOUSE_DOWN,presionado);
      }
      private function presionado(event:MouseEvent)
      {
         trace("me has presionado");
         trace("obtengo el valor de orientación " + father.getOrientacion());
      }
      public function getContacto():Boolean
      {
         return contacto;
      }
   }
}

Espero que te sirva

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2013 01:06 pm
BuenAS:

Lo que te ha comentado Palacio debe funcionar perfectamente, pero yo le daría un enfoque algo distinto: me crearía una clase con los datos que quieres compartir (un Value Object), y es una referencia de esta, la que paso a Cubo, EN LUGAR de una referencia a Main.

Código ActionScript :

package
{
   import flash.display.MovieClip;
   public class Main extends MovieClip
   {
      private var _cubo:Cubo;
      
      public function Main()
      {
         trace("la funcion Main esta activa");
         var data:DataVO = new DataVO();
         
         data.orientacion = "X";
         
         _cubo = new Cubo(data);
         this.addChild(_cubo);
         trace("obtengo el valor de contacto " + data.getContacto());
      }
      
   }
}


Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   
   public class Cubo extends MovieClip
   {
      private var _data:DataVO;
      
      public function Cubo(data:DataVO)
      {
         this._data = data;
         
         this._data.contacto = true;
         
         drawComponent();
         
         this.addEventListener(MouseEvent.MOUSE_DOWN, presionado);
      }
      
      private function presionado(event:MouseEvent):void
      {
         trace("me has presionado");
         trace("obtengo el valor de orientación " + _data.getOrientacion());
      }
      
      private function drawComponent():void
      {
         graphics.beginFill(0xcccccc);
         graphics.drawRect(0, 0, 120, 32);
         graphics.endFill();
      }
      
   }
}


Y aquí estaría la nueva clase, la llamo DataVO y es la que contiene los datos de la aplicación y los métodos para recuperarlos.

Código ActionScript :

package
{
   public class DataVO
   {
      public var orientacion:String;
      
      public var contacto:Boolean;
      
      public function getOrientacion():String
      {
         return orientacion;
      }
      
      public function getContacto():Boolean
      {
         return contacto;
      }
      
   }
}


Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Feb 2013 01:10 pm
...esto... he añadido el método drawComponent a Cubo para 'pintar' algo donde hacer click ;)

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 17 Feb 2013 03:29 pm
Hola muchas gracias, por sus respuestas, funciono perfectamente y el desarrollo de mi aplicación sencilla se los dedicare.

Por maklister

6 de clabLevel



Genero:Masculino  

chrome

 

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