Comunidad de diseño web y desarrollo en internet online

Error al cargar un swf de carga externa (Error #1009)

Citar            
MensajeEscrito el 19 Jun 2012 02:41 pm
Buenas!
Cargué un swf externo (que es una galeria de imagenes con carga xml), pero cuando pruebo la película, me sale este error:

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

Main es el archivo AS File, que contiene el AS3 de la galería.

El código si lo pruebo con cualquier otro swf me funciona perfecto, pero con la galeria me sale este error. Cómo puedo solucionarlo? el problema está en el Main?

Este es el codigo que tengo cuando llamo a la "galeria":
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.URLRequest;

var SWF:Loader = new Loader();
var ruta:URLRequest = new URLRequest ("galeria.swf");

SWF.load (ruta);
SWF.contentLoaderInfo.addEventListener(Event.COMPLETE, añadir);
function añadir (e:Event) :void{
addChild (SWF);
}

y este es el que tengo dentro de Main
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.filters.DropShadowFilter;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;

import jel.com.display.SpriteCenter;
import jel.com.events.MenuEvent;
import jel.com.ui.SlideMenu;
import gs.TweenMax;
import gs.easing.Linear;

public class Main extends SpriteCenter
{
private var xml:XML;
private var cargadorImagenes:Loader;
private var imagenFondo:Bitmap;
private var sombra:Sprite;

public function Main()
{
super(800, 600, new FondoDegradado(800, 600, 0x666666));

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

sombra = new Sprite();
sombra.alpha = 0.0;
addChild(sombra);
sombra.filters = [new DropShadowFilter(20, 30, 0x333333, 0.4, 14, 14, 1, 2)];

imagenFondo = new Bitmap();
addChild(imagenFondo);

cargadorImagenes = new Loader();
cargadorImagenes.alpha = 0.0;
addChild(cargadorImagenes);
cargadorImagenes.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);

imagenFondo.y = cargadorImagenes.y = sombra.y = 10;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onCompleteXml);
loader.load(new URLRequest("xml/galeria.xml"));

}


private function onCompleteXml(evt:Event):void {
try {
xml = new XML(evt.target.data);
var menu:SlideMenu = new SlideMenu(800, 600, xml);
menu.y = 520;
addChild(menu);
menu.addEventListener(MenuEvent.MENU_CLICK, onMenuClickListener);
cargadorImagenes.load(new URLRequest("images/" + xml.imagen[0]));
} catch (e:TypeError) {
trace("Error al procesar el archivo Xml : "+ e.message);
}
}

private function onCompleteLoad(evt:Event):void {
sombra.graphics.clear();
sombra.graphics.beginFill(0x000000, 1.0);
sombra.graphics.drawRect(0, 0, cargadorImagenes.width, cargadorImagenes.height);
imagenFondo.x = cargadorImagenes.x = sombra.x = Math.round(0.5 * (800 - cargadorImagenes.width));
if (sombra.alpha == 0.0) {
TweenMax.to(sombra, 0.5, {alpha:1.0, ease: Linear.easeNone} )
}
TweenMax.to(cargadorImagenes, 0.5, {alpha:1.0, ease: Linear.easeNone, onComplete:onCompleteTween} );
}

private function onCompleteTween():void {
}

private function onMenuClickListener(evt:MenuEvent):void {
imagenFondo.bitmapData = Bitmap(cargadorImagenes.content).bitmapData;
cargadorImagenes.alpha = 0.0;
cargadorImagenes.load(new URLRequest("images/" + xml.imagen[evt.elemento]));

}
}
}
import flash.geom.Matrix;
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.display.InterpolationMethod;
import flash.display.Sprite;

class FondoDegradado extends Sprite {
public function FondoDegradado(_width:Number, _height:Number, color:Number=0xffffff) {
var matrizDegradado:Matrix = new Matrix();
matrizDegradado.createGradientBox(_width, _height, 0.5*Math.PI, 0, 0);
graphics.beginGradientFill(GradientType.LINEAR, [color, color, color, color], [1.0, 0.0, 0.0, 1.0], [0, 100, 200, 255], matrizDegradado);
graphics.drawRect(0, 0, _width, _height);

}
}

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 03:01 pm
Esta accediendo al stage, algo que no puede hacer hasta que no ha sido agregado al DisplayList. Quita ese c{odigo del copnstructor, ponlo en un metodo publico init y llamalo una vez que lo has agregado al displaylist

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 05:41 pm
Hola Jorge, muchas gracias por tu respuesta! para serte sincera, no entendí mucho la respuesta. Uso el flash pero no soy experta con el AS3. De hecho no sé cómo proceder con tus indicaciones. Me ayudarías un poquito más?

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 06:16 pm
puede ser que tenga que agregar esto así?

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

private function init(e:Event):void

Qué es lo que tendría que borrar y dónde ubicaría lo que falta del código?

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 06:25 pm
Todo lo que tienes en el contructor (Main) lo pasas a init y en Main dejas

this.addEventListener(Event.ADDED_TO_STAGE, init);

Puede que haya otros errores, pero por lo menos este es seguro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 06:41 pm
a que te refieres con "lo pasas a init"?

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 06:53 pm
Sería:

Código ActionScript :

public function Main()
{
   this.addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{
   //aqui copypasteas todo lo que habia antes en init
}


Es decir todo lo que antes se ejecutaba en el constructor, ahora se ejecuta en la nueva funci'on init

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 07:14 pm
Puede ser entonces que quede así? Puse en rojo lo que cambié

package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.filters.DropShadowFilter;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;

import jel.com.display.SpriteCenter;
import jel.com.events.MenuEvent;
import jel.com.ui.SlideMenu;
import gs.TweenMax;
import gs.easing.Linear;

public class Main extends SpriteCenter
{
private var xml:XML;
private var cargadorImagenes:Loader;
private var imagenFondo:Bitmap;
private var sombra:Sprite;

public function Main()
{
this.addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{

super(800, 600, new FondoDegradado(800, 600, 0x666666));

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

sombra = new Sprite();
sombra.alpha = 0.0;
addChild(sombra);
sombra.filters = [new DropShadowFilter(20, 30, 0x333333, 0.4, 14, 14, 1, 2)];

imagenFondo = new Bitmap();
addChild(imagenFondo);

cargadorImagenes = new Loader();
cargadorImagenes.alpha = 0.0;
addChild(cargadorImagenes);
cargadorImagenes.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);

imagenFondo.y = cargadorImagenes.y = sombra.y = 10;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onCompleteXml);
loader.load(new URLRequest("xml/galeria.xml"));

}


private function onCompleteXml(evt:Event):void {
try {
xml = new XML(evt.target.data);
var menu:SlideMenu = new SlideMenu(800, 600, xml);
menu.y = 520;
addChild(menu);
menu.addEventListener(MenuEvent.MENU_CLICK, onMenuClickListener);
cargadorImagenes.load(new URLRequest("images/" + xml.imagen[0]));
} catch (e:TypeError) {
trace("Error al procesar el archivo Xml : "+ e.message);
}
}

private function onCompleteLoad(evt:Event):void {
sombra.graphics.clear();
sombra.graphics.beginFill(0x000000, 1.0);
sombra.graphics.drawRect(0, 0, cargadorImagenes.width, cargadorImagenes.height);
imagenFondo.x = cargadorImagenes.x = sombra.x = Math.round(0.5 * (800 - cargadorImagenes.width));
if (sombra.alpha == 0.0) {
TweenMax.to(sombra, 0.5, {alpha:1.0, ease: Linear.easeNone} )
}
TweenMax.to(cargadorImagenes, 0.5, {alpha:1.0, ease: Linear.easeNone, onComplete:onCompleteTween} );
}

private function onCompleteTween():void {
}

private function onMenuClickListener(evt:MenuEvent):void {
imagenFondo.bitmapData = Bitmap(cargadorImagenes.content).bitmapData;
cargadorImagenes.alpha = 0.0;
cargadorImagenes.load(new URLRequest("images/" + xml.imagen[evt.elemento]));

}
}
}
import flash.geom.Matrix;
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.display.InterpolationMethod;
import flash.display.Sprite;

class FondoDegradado extends Sprite {
public function FondoDegradado(_width:Number, _height:Number, color:Number=0xffffff) {
var matrizDegradado:Matrix = new Matrix();
matrizDegradado.createGradientBox(_width, _height, 0.5*Math.PI, 0, 0);
graphics.beginGradientFill(GradientType.LINEAR, [color, color, color, color], [1.0, 0.0, 0.0, 1.0], [0, 100, 200, 255], matrizDegradado);
graphics.drawRect(0, 0, _width, _height);

}
}

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 07:18 pm
Si

Jorge

Tip: pruebo luego pregunto,

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 07:25 pm
Gracias Jorge por tanta paciencia: es que me sigue apareciendo el mismo error. No se soluciona

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 07:28 pm
¿El mismo? ¿Dice Main o dice otra cosa?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 07:30 pm
El mismo, dice Main

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 07:32 pm
El stack completo da una idea de donde surge el error, deja Main vacio y mira si sale el error, tiene que nombrar otro metodo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 07:39 pm
si te refieres a dejar el documento de Main vacío (borrar todo el código), sigue saliendo el msimo error

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 07:42 pm
Uff, sorry, esto va para larguisimo, dejo la posta a alguien mas didactico

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Jun 2012 07:46 pm
bueno, gracias de todos modos.

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 08:10 pm
puedo hacerte una última pregunta? es posible que no tenga que usar el archivo Main y el AS lo escriba en el mismo archivo de la galería?

Por candediez

18 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jun 2012 08:12 pm
Podrías, pero si no tienes cierta base de programacion, te van a llover de nuevo los 1009

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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