Comunidad de diseño web y desarrollo en internet online

error entre Precarga y Main

Citar            
MensajeEscrito el 23 Nov 2010 04:40 pm
Hola chicos!!!

He estado realizando mi sitio sin precarga porque se la pensaba agregar despues, de manera externa. hasta ahi todo funcionaba perfecto.

hice mi preload.swf y lo puse a cargar un swf sin codigo, solo con imagenes para probarlo y funciono perfectamente.

El problema viene cuando le pongo a cargar el archivo real, el que tiene todo el codigo (Main)

Tal vez hay un conflicto de clases o algo asi, porque no entiendo que pasa , me sale este error:

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 clases::Main()
 


Solicito colaboracion muchachos

gracias :D

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2010 07:09 pm
¿Que dice el constructor de Main? (o cual es el código del primer frame si no trabajaste en clases)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Nov 2010 07:33 pm
Hola jorge!!!

estoy trabajando con clases:
Preload.as = el codigo del preload
y
Main.as = todo el codigo del home (diagramacion liquida, objetos...)

esto esta esta en el constructor de mi Main.as :

Código ActionScript :

addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);


y esta funcion esta en mi Preload.as :

Código ActionScript :

public function addedToStageHandler(e:Event):void{
         loader = new Loader();
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoadingMainSWFMovie);
         loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressLoadingMainSWFMovie);
         var urlRequest:URLRequest = new URLRequest("home.swf");
         loader.load(urlRequest);
         removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
      }


Gracias Jorge

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2010 07:35 pm
ahh se me olvidaba:
esta es la funcion addedToStageHandler de mi Main.as:

Código ActionScript :

public function addedToStageHandler(e:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2010 07:38 pm
creo que escribimos al tiempo , jeje

pero mira que antes no colocaba esa funcion en Main.as y me daba el mismo error

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2010 07:39 pm
¿Pero cual es el sentido de addedToStageHandler (que veo repetido del Loader) si lo único que hace es quitar el listener que lo invoca?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Nov 2010 01:46 pm
Hola Jorge

Imaginate que probe con un preloader que si me funciona en otro proyecto, este es mas comun: no tiene ADD_TO_STAGE y el codigo esta en la linea de tiempo.... pero me da el mismo error.

No entiendo porque?? si al ejecutar el home solito funciona todoperfecto

entonces me surge esta duda:

Por lo general los sitios flash se componen de (un supuesto generico):

preloader.swf - home.swf - hijo1.swf - hijo2.swf .... etc...

como yo tengo entendido el codigo, manejado en clases, iria asi:

preloader.swf: Preloader.as (solo el codigo de precarga)
home.swf : Main.as (la mayoria del codigo)
hijo1.swf : Hijo.as (codigo solo del hijo y tal vez comunicacion con Main.as)


osea que en el html esta embebibo preloader.swf y este llama a home.swf y este a los hijos

o tal vez la Preloader.as y Main.as deben ser uno solo???

si estoy mal por favor corrijeme, porque estoy un poco perdida y no entiendo el porque de ese error

Gracias! :)

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 01:54 pm
El preloader lo metes en el HTML y carga lo que sea, pero no contestaste mi pregunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Nov 2010 02:08 pm
hola Jorge !

Pues el addedToStageHandler lo use con un tuto de precarga externa con clases, entonces la verdad no se muy bien como funcionada, ahora como te dije estoy usando este preloader que me ha servido en el pasado:

Código ActionScript :

var myRequest:URLRequest = new URLRequest("home.swf");
var myLoader:Loader = new Loader();

myLoader.load(myRequest);

myLoader.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,showContent);

var myPreloader:Preloader = new Preloader();

function showPreloader(event:Event):void {
   addChild(myPreloader);
   myPreloader.x = stage.stageWidth/2;
   myPreloader.y = stage.stageHeight/2;
}

function showProgress(event:ProgressEvent):void {
   var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
   myPreloader.loading_txt.text = "Cargando - " + Math.round(percentLoaded * 100) + "%";
   myPreloader.bar_mc.width = 198 * percentLoaded;
}

function showContent(event:Event):void {
   removeChild(myPreloader);
   addChild(myLoader);
}


pero me da el mismo error, segun he investigado tal vez es por que intenta acceder al codigo del home (Main.as) antes de tiempo, pero si fuera asi, no se como arreglarlo

Gracias Jorge!!

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 02:52 pm
Quita lo que tienes en el constructor de Main.as

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Nov 2010 02:54 pm
Jorge:
comente aquello y me da el mismo error, esto me esta enloqueciendo!!

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 02:55 pm
Pon lo que tiene tu clase Main

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Nov 2010 02:59 pm
ay perrdon comente pero se me olvido conmpilar, sorry , jeje

ya con nada en la f constructora de Main si carga el preload.

esta es mi funcion constructora del main:

Código ActionScript :

      public function Main(){
         this.addChild(cortina_mc);
         cortina_mc.graphics.beginFill(0x000000);
           cortina_mc.graphics.drawRoundRect(0, 0, 1, 1, 0, 0);
         ponerCortina();

         stage.addEventListener(Event.RESIZE, stageResizeHandler);
         addEventListener(Event.ADDED_TO_STAGE, stageResizeHandler);
         stageResizeHandler();
         
         apagarPlay();
         menuHastur();
               
         footer_mc.scaleX= stage.stageWidth;
         
         mp3player_mc.prev_mc.addEventListener(MouseEvent.CLICK, prevSong);
         mp3player_mc.next_mc.addEventListener(MouseEvent.CLICK, nextSong);
         mp3player_mc.play_mc.addEventListener(MouseEvent.CLICK, playSong);
         mp3player_mc.stop_mc.addEventListener(MouseEvent.CLICK, stopSong);
         
         loader.addEventListener(Event.COMPLETE, Loaded);  
              loader.load(new URLRequest("xml/music.xml"));
      }

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 03:10 pm
Hola Jorge.
Te cuento que me puse a comentar cosa por cosa en la funcion constructora del Main y encontre el problema:

Código ActionScript :

stage.addEventListener(Event.RESIZE, stageResizeHandler);
addEventListener(Event.ADDED_TO_STAGE, stageResizeHandler);
stageResizeHandler();
   
footer_mc.scaleX= stage.stageWidth;


Es problema es causado por la diagramacion liquida.

Entonces como lo resuelvo?
hago la diagramacion liquida desde el preload.as?
como?

Gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 06:17 pm
Hola:

Perdon que me entrometa, solo intento ayudar un poco.

El problema es el acceso al stage, cuando corres tu main.swf no hay ningun problema porque este es duseño del stage por asi decirlo, cuando lo cargas desde otro swf ese otro swf es el dueño del stage y tu main que intenta acceder a stage marca esos errores que son exclusivamente en tu diagrmacion liquida porque alli accesas al stage.

El listener de ADDED_TO_STAGE (o algo asi) devuelvelo como estaba y en la funcion que se mandaba llamar pones tu codigo de la diagramacion liquida.


Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 06:46 pm
Hola Angel, ya sabes que cualquier contribucion es bienvenida

entonces me dices que coloque la diagramacion liquida desde Preload.as

pero como hago para referirme a objetos entre clases, es decir que estan en otros swf ?

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 07:10 pm
Nop yo no dije eso.

Debes evitar cualquier acceso a stage desde tu main.swf para esto main.swf no accesara a stage hasta que no este stage disponible...hasta alli si?

Entonces tienes este codigo en tu constructor:

Código ActionScript :

stage.addEventListener(Event.RESIZE, stageResizeHandler); 
addEventListener(Event.ADDED_TO_STAGE, stageResizeHandler); 
stageResizeHandler(); 
    
footer_mc.scaleX= stage.stageWidth; 


Lo cambias por este otro:

Código ActionScript :

addEventListener(Event.ADDED_TO_STAGE, stageResizeHandler); 


Ahora la funcion stageResizeHandler:

Código ActionScript :

function stageResizeHandler (e:Event){
stage.addEventListener(Event.RESIZE, stageResizeHandler); 
footer_mc.scaleX= stage.stageWidth; 
}


Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 08:36 pm
Hola Angel!!

lo hice asi:

en el constructor:

Código ActionScript :

addEventListener(Event.ADDED_TO_STAGE, stageResizeHandler);


y estas son mis funciones:

Código ActionScript :

private function stageResizeHandler(e:Event){
stage.addEventListener(Event.RESIZE, Redimensionar);
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
footer_mc.scaleX= stage.stageWidth;
}

private function Redimensionar(evt:Event = null):void {
//stage.align = StageAlign.TOP_LEFT;
//stage.scaleMode = StageScaleMode.NO_SCALE;
var ANCHO:Number = stage.stageWidth;
var ALTO:Number = stage.stageHeight;
footer_mc.x=(ANCHO - footer_mc.width) / 2;
footer_mc.y= ALTO - footer_mc.height;
links_mc.x=(ANCHO - links_mc.width)-5;
links_mc.y=(ALTO - links_mc.height)-3;
mp3player_mc.x= 5;
mp3player_mc.y= (ALTO - mp3player_mc.height)-6;
legal_mc.x= (ANCHO - legal_mc.width)/2;
legal_mc.y= (ALTO - footer_mc.height)+10;

cortina_mc.x=(ANCHO - cortina_mc.width) / 2;
cortina_mc.y=(ALTO - cortina_mc.height) / 2;
cortina_mc.scaleX= ANCHO;
cortina_mc.scaleY= ALTO;
}


aplica la diag liquida desde home.swf y desde preloader.swf
pero solo al redimensionar la ventana, no al inciar

¿que faltara?

gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 09:16 pm
Se manda llamar Redimensionar cada que se despacha el evento RESIZE por eso solo se visualiza al cambiar el tamaño de la ventana, en la funcion stageResizeHandler haz una llamada a Redimensionar


Código ActionScript :

private function stageResizeHandler(e:Event){ 
stage.addEventListener(Event.RESIZE, Redimensionar); 
stage.align = StageAlign.TOP_LEFT; 
stage.scaleMode = StageScaleMode.NO_SCALE; 
footer_mc.scaleX= stage.stageWidth; 

Redimensionar();
} 

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2010 10:52 pm
jeje, si olvide ese detalle

Gracias chicos

Por dianita666

Claber

185 de clabLevel



 

firefox

 

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