Comunidad de diseño web y desarrollo en internet online

Duda con Clase de Documento

Citar            
MensajeEscrito el 21 Feb 2009 06:58 pm
Me he descargado un archivo .fla y en el panel de propiedades viene vinculada la clase como Clase de documento: Main. ¿ No es acaso eso lo mismo que si ponemos con código AS3 en el primer frame :

Código :

import clases.Main;

Por qué no funciona si lo hago de la segunda manera. Gracias.

Por byweb

118 de clabLevel



Genero:Masculino  

Lucena (Córdoba)

firefox
Citar            
MensajeEscrito el 21 Feb 2009 10:16 pm
hola, la forma mas facil para que puedas vincula tu fla con el .as, es, si abres el flash cs3 y creas un documento nuevo, veras que abajo dice "Clase de documento:" ahi tienes q poner el nombre de la clase a vincular y luego guardar el archivo en el mismo lugar.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 21 Feb 2009 10:47 pm
por que de la primera manera el fla se encarga de crear los objetos de clases en la cabecera del programa de la segunda forma lo tienes que crear mas o menos asi

Código :

import clases.Main;
var nuevaClase=new Main()
addChild(nuevaClase)

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Feb 2009 11:41 am
Mo me funciona como dices tampoco, no se entonces como como vincularlo. Me sale el siguiente error de salida:

Código :

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

Por byweb

118 de clabLevel



Genero:Masculino  

Lucena (Córdoba)

firefox
Citar            
MensajeEscrito el 23 Feb 2009 04:35 pm
Es mas recomendable vincular la clase externa para esto debes crear un .as y lo guardas donde mismo que tu .fla:

Código ActionScript :

package{
import flash.display.MovieClip;
public class Main extends MovieClip{
 //variables globales
   public function Main(){
 //Constructor de la clase
} 

}

}

//El archivo se llama como la clase Main.as y en tu .fla en las propiedades
//buscas documentclass y pones Main picas el lapicito y te manda al codigo


De esta forma queda vinculado tu documento ala clase Main, pero veo que tu lo quieres dentro de una carpeta clases
solo debes indicar la ruta en el "package"

Código ActionScript :

package  clases{

Creas una carpeta clases donde mismo que tu .fla y dentro de esta carpeta esta Main.as y en el document class pones clases.Main picas el lapiz y te manda al codigo.Espero te sirva :)

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2009 07:01 pm
Gracias, eso si lo se, quizás es que no me expresé bien, yo lo que no quiero, es vincularlo con el lapicito digamos, sino llamar a la clase y ejecutarla con código As3 en el primer frame , asi:

Código :

import clases.Main;
var miclase:Main = new Main()
miclase.Main()

el Main.as queda asi:

Código :

package clases
{
   
   import flash.display.StageScaleMode;
   import flash.display.StageAlign;
   import flash.display.Sprite;

   public class Main extends Sprite {
      
      public function Main() {
         stage.scaleMode = StageScaleMode.NO_SCALE;
         stage.align = StageAlign.TOP_LEFT;
         trace("Por fin salió!");
      }
      
   }
   
}

Si lo vinculo con el lapicito y anulo el código del primer frame funciona bien, pero si anulo lo del lapicito y pongo el código en el primer frame no funciona y no encuentro la razón, por qué debería ser igual no ?

Por byweb

118 de clabLevel



Genero:Masculino  

Lucena (Córdoba)

firefox
Citar            
MensajeEscrito el 23 Feb 2009 08:22 pm
Aaaaa!!! el problema es el acceso al stage :D

Si la clase no esta vinculada al documento no reconocera el stage asi que le pones un listener para saber cuando puedes acceder al stage:

Código ActionScript :

//Main.as

package clases
{
   
   import flash.display.StageScaleMode;
   import flash.display.StageAlign;
   import flash.display.Sprite;
   import flash.events.*;

   public class Main extends Sprite {
      
      public function Main() {
        
        addEventListener(Event.ADDED_TO_STAGE,stageLista);
         
      }
     
     public function stageLista(e:Event){
        stage.scaleMode = StageScaleMode.NO_SCALE;
         stage.align = StageAlign.TOP_LEFT;
         trace("Por fin salió!");
        }
      
   }



Y en tu .fla tienes este codigo:

Código ActionScript :

import clases.Main;
var miclase:Main = new Main()
miclase.Main()



Supongo te lanza un error en la linea "miclase.Main();" no es necesario llamar al constructor ya que se ejecuta al poner "new Main();" asi que eliminaremos esa linea, y para que esta clase tenga acceso al stage la añadimos con un "addChild();"

Código ActionScript :

import clases.Main;
var miclase:Main = new Main()//Ejecuta el constructor
addChild(miclase);//se añade al Stage

//Output:   "Por fin salió!"


Saludos!!! :D

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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