Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tcr.nupe

[Resolvido] Erro ao fazer load de um swf externo

Recommended Posts

Boa tarde,

 

Estou com o seguinte problema... Tenho os arquivos

 

index.fla

colecao.fla

Script.as

Thumb.asThumbScroller.as

GaleryChooser.as

Root.as

 

o funcionamento é o seguinte, no index.fla tenho um menu que da acesso a swf externo e carrega dentro do index o coleção.fla!

 

ao clicar no menu coleção ele executa o seguinte:

 

function clickHandler(event:MouseEvent):void {
    
    for (var i:int = 0; i < clipArray.length; i++) {
        if (event.currentTarget == clipArray[i]) { //clipArray[i] = colecao.swf
            loader.load(new URLRequest(destArray[i]));
            preloader.x = stage.stageWidth/2;
            preloader.y = stage.stageHeight/2;
            addChild (preloader);
            addChild (loader);
	    loader.alpha = 0.0;
	    TweenLite.to(loader, 7.0, {alpha:0.0, delay:0.0, onCompleteParams:[1.0, loader]});
            trace('teste')
         
        } // END if
    } // END for
} // END clickHandler

mas após imprimir 'teste' ocorre o seguinte erro:

TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula.
	at classes::Script()
TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula.
	at classes::ThumbScroller()
	at classes::Script/xmlLoaded()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()

OBS: Se executar o colecao.swf separadamente(sem ser carregado) ele executa normal. No arquivo colecao.swf n existe nd dentro apenas a propriedade

Class do arquivo lincada com Script.as

 

Segue parte dos códigos dos arquivos:

 

Script.as

 

package classes {
	
	import flash.display.Sprite;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	
	public class Script extends Root {
		private var xmlLoader:URLLoader = new URLLoader ();
		private var container:Sprite = new Sprite ();
			

		
		public function init(e:Event):void{
	
			thumbScroller:ThumbScroller;// = Root.thumbScroller;
			galleryChooser:GalleryChooser;// = Root.galleryChooser;
		}
			
		public function Script () {
			xmlLoader.addEventListener (Event.COMPLETE, xmlLoaded);
			xmlLoader.load (new URLRequest ('images.xml'));
	
			addChild (container);
	
			Root.stage.addEventListener (Event.RESIZE, stageResized);
		}
			
		private function stageResized (evt:Event) : void {
			container.y = int ((stage.stageHeight - container.height) * .5);
			container.x = 300;
		}
			
		private function xmlLoaded (evt:Event) : void {
			Root.images = new XML (evt.target.data);
			Root.curGal = images.gallery [0].@name;
				
			thumbScroller = new ThumbScroller ();
			thumbScroller.y = 160;
			container.addChild (thumbScroller);

Thumb.as

package classes {
	
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.text.*;
	import flash.geom.ColorTransform;
	//import caurina.transitions.*;
	import gs.TweenLite;
	import fl.transitions.easing.*;
	
	public class Thumb extends Sprite {
		
		private var size:Number = Root.thumbSize;
		private var overSize:Number = Root.thumbOverSize;
		
		private var back:Shape = new Shape ();
		private var thumb:DisplayObject;
		private var loader:Loader = new Loader ();
		private var loaded:Event = new Event ('LOADING_COMPLETE', true, true);
		
		private var per:TextField = new TextField ();
		private var format:TextFormat = new TextFormat ();

		private var colorInfo:ColorTransform = back.transform.colorTransform;
		private var imageInfo:XML;
		
		private var imageLoaded:Boolean = false;
		
		public function Thumb (thumb:DisplayObject, imageInfo:XML) {
			this.thumb = thumb;
			this.imageInfo = imageInfo;
			
			//back.graphics.beginFill (Root.thumbBorderColour);
			back.graphics.drawRect (-overSize * .5, -overSize * .5, overSize, overSize);
			back.graphics.drawRect ((size - 5 * overSize) * .1, (size - 5 * overSize) * .1, overSize - size * .2, overSize - size * .2);
			back.graphics.endFill ();
			
			back.width = back.height = size;
			back.alpha = .7;

			thumb.width = thumb.height = size;
			thumb.x = thumb.y = -size * .5;
			addChild (thumb);
			addChild (back);

 

ThumbScroller.as

package classes {
	
	import flash.display.Sprite; 
	import flash.display.Shape;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import gs.TweenLite;
	import fl.transitions.easing.Strong;
//	import caurina.transitions.*;
		
	public class ThumbScroller extends Sprite {
		
		private var size:Number = Root.thumbSize;
		private var overSize:Number = Root.thumbOverSize;
		
		public var back:Shape = new Shape ();
		public var thumbHolder:Sprite;
		private var thumb:Thumb;
		private var loader:Loader;
		
		private var xml:XML;
		private var numItems:int;
		private var num:int = 0;
		
		public function ThumbScroller () : void {
			//back.graphics.beginFill (Root.thumbBackColour);
			back.graphics.drawRect (0, 0, Root.stage.stageWidth, Root.thumbSize + int (Root.thumbSize * .2));
			back.graphics.endFill ();
			
			back.filters = [Root.glowFilter];
			
			addChild (back);
		}
		
		public function construct (gal:XML) : void {
			xml = gal;
			numItems = xml.item.length () - 1;
			
			if (thumbHolder != null) {

 

 

 

Root.as

package classes {
	
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.filters.GlowFilter;
		
	public class Root extends Sprite {

		public static const thumbSize:Number = 250;
		public static const thumbOverSize:Number = 450;
		
		public static var thumbScrollSpeed:Number = .08;
		public static var imageScrollSpeed:Number = .1;
		
		public static const galleryChooserBackColour:Number = 0xB7AC82;
		public static const galleryChooserSelectedColour:Number = 0xDDDDDD;
		public static const galleryChooserOverColour:Number = 0xFFFFFF;
		
		public static var glowFilter:GlowFilter = new GlowFilter (0, .8, 10, 10, 1, 3);
		public static var thumbGlowFilter:GlowFilter = new GlowFilter (0, .8, 5, 5, 1, 3);
		
		public static var curGal:String;
		public static var curImage:String;
		public static var stage:Stage;
		public static var images:XML = new XML ();
		
		public static var thumbScroller:ThumbScroller;
		public static var galleryChooser:GalleryChooser;
		public static var container:Sprite;
		
		public function Root () {			
			Root.stage = this.stage;
		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só de curioso

 

remove isso: loader.alpha = 0.0;

E o tween depois dele

 

E verifica se ele ainda aplica o mesmo erro...

 

E se mostra sua mensagem de teste ou n.

 

to achando que tu ta tentando colocar propriedade um object que não aceita alpha

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa,

 

removi mas n adiantou.. se ajudar, no arquivo colecao.swf, em vez de likar o Script.as na propriedade class eu adicionar via as3 com import e new Scritp(); e depois der addChild(elemento Script) ocorre o mesmo erro q quando eu chamo pelo index.

 

e outra coisa, tenho outros arquivos além da colecao.swf como empresa.swf, contato.swf... e esses abrem normal.. mas não tem nada de classe nesses outros

 

pode ver uma prévia em www.datazip.com.br/propostas/seculoxxx

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o problema não esta nessa parte?

 

 

 

preloader.x = stage.stageWidth/2;
 preloader.y = stage.stageHeight/2;

da um trace("teste") antes disso e ve se aparece.

 

Eu ja tive esse problema, e se não me engano o problema é que quando voce roda o swf e ele funciona é pq ele entende a propriedade stage.

Só que quando voce carrega ele a partir de outra classe ele ja não reconhece mais o stage.

 

tente usar um root.stage ou parente.stage

 

Tenho quase certeza que é isso, aconteceu cmg , só não lembro como fiz pra resolver , mas acho que foi isso =p

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o problema não esta nessa parte?

 

 

 

preloader.x = stage.stageWidth/2;
 preloader.y = stage.stageHeight/2;

da um trace("teste") antes disso e ve se aparece.

 

Eu ja tive esse problema, e se não me engano o problema é que quando voce roda o swf e ele funciona é pq ele entende a propriedade stage.

Só que quando voce carrega ele a partir de outra classe ele ja não reconhece mais o stage.

 

tente usar um root.stage ou parente.stage

 

Tenho quase certeza que é isso, aconteceu cmg , só não lembro como fiz pra resolver , mas acho que foi isso =p

 

 

opa.. entao cara.. em partes o problema era isso tb.. mas n era só isso.. segui a sua dica e resolvi parte do problema.. aew tive q redeclarar algumas variaveis fora do private..

 

mas enfim.. você está certo sobre o comentário.. ajudou bastante..

 

vlw, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.