Comunidad de diseño web y desarrollo en internet online

instanciar una clase a una archivo fla AS3

Citar            
MensajeEscrito el 10 Dic 2008 12:24 pm
Hola, buenos días

Después de estar dando muchas vueltas no logro solución al siguiente problema. Que seguramente resulte muy sencillo aunque a mí me parezca desdesperante al ser mis primeros pasos con AS3.

Bien, planteo el problema:
Tengo escrita una clase tal que así:

Código :

package {
   
   import flash.display.*;
   import flash.media.*;
   import flash.net.*;
   import flash.events.*;
   
   public class cargadorSonidos extends Sprite {
      
      var channel:SoundChannel;
      var trans:SoundTransform;
      
      
      
      public function cargadorSonidos() {
         var snd:Sound = new Sound();
         snd.load(new URLRequest("song.mp3"));

         channel = new SoundChannel();
         channel = snd.play();

         trans = new SoundTransform();

         this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);

      }
      
      
      
      private function onLoop(evt:Event):void {
         trans.volume = 1 - mouseY/stage.stageHeight;
         trans.pan = mouseX/(stage.stageWidth/2) - 1
         channel.soundTransform = trans;
      }
      
   }
   
}


Seguidamente en el archivo fla la instancio de la siguiente manera:
En el panel propiedades, en document class pongo el siguiente nombre: cargadorSonidos y todo funciona de maravilla.

Pero el problema que se me presenta es el siguiente: Si quiero usar varias clases en el mismo archivo fla ya no puedo instanciar la clase de esa manera.

Por lo que en el primer fotograma en el panel acciones escribo lo siguiente:

Código :

import cargadorSonidos;
var crgSonidos:cargadorSonidos = new cargadorSonidos;


y me sale el siguiente error:

escribió:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at cargadorSonidos/::onLoop()



En resumen que creo que no tengo ni idea de instanciar las clases, ya que por ejemplo otra que tengo escrita para cargar imágenes funciona perfectamente al escribir en el panel de propiedades su nombre pero si la trato de importar escribiendo codigo en el fla, tarariquetevi!!

Muchas gracias, a ver si alguien me puede echar una mano.

Iván

Por ivan_23

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 03:03 pm

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 03:28 pm
Muchas gracias Eliseo2,

He estado mirando el enlace que me sugieres y bueno al menos ahora no sale ningun error. Pero el programa no esta funcionando como debería, ya que se trata de según estes situado en la horizontal de la pantalla se oiga por un altavoz u otro y según la vertical, mas fuerte o más bajo.

el archivo lo he configurado de la siguiente manera:

1. clase Main principal:

Código :

package {
   
   import flash.display.Sprite;

   import cargadorSonidos;

   public class Main extends Sprite {

      function Main() {

         var crgSonidos:cargadorSonidos = new cargadorSonidos();

      }

   }

}


2. clase cargadorSonidos

Código :

package {

   import flash.display.*;
   import flash.media.*;
   import flash.net.*;
   import flash.events.*;

   public class cargadorSonidos extends Sprite {

      var channel:SoundChannel;
      var trans:SoundTransform;



      public function cargadorSonidos() {
         var snd:Sound = new Sound();
         snd.load(new URLRequest("song.mp3"));

         channel = new SoundChannel();
         channel = snd.play();

         trans = new SoundTransform();

         //this.addEventListener(Event.ADDED, init);
         this.addEventListener(Event.ADDED_TO_STAGE, init);
         

      }
      private function init(e:Event):void {

         

         this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);

      }
      private function onLoop(evt:Event):void {
         trans.volume = 1 - mouseY/stage.stageHeight;
         trans.pan = mouseX/(stage.stageWidth/2) - 1;
         channel.soundTransform = trans;
      }
   }
}


3. Archivo fla que adjunto la clase Main en en panel de propiedades Document class.

Muchas gracias, iván

Por ivan_23

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 03:34 pm
Si quiero usar varias clases en el mismo archivo fla ya no puedo instanciar la clase de esa manera.....
Le puedes cambiar de nombre pero q hereden de la misma clase

Por emedinaa

196 de clabLevel

2 tutoriales

Genero:Masculino  

Lima Perú

firefox
Citar            
MensajeEscrito el 10 Dic 2008 04:55 pm
¡¡NO lo has añadido al Stage!!

Código ActionScript :

addChild(crgSonidos) 


Aún así hay algo que no me acaba de convencer y es el uso de "stage" dentro de la clase, haz algún trace a ver qué valor tiene y/o prueba con parent.stage
Por cierto, tal y como dice Asphyk, lo que quieres no es instanciar una clase sino "crear uno o varios objetos de una clase"

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Dic 2008 05:06 pm
Joe para matarme..... Muchas Gracias! Ya funciona perfectamente.

Ya podía estar yo dando vueltas...

Por ivan_23

2 de clabLevel



 

firefox

 

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