Ir para conteúdo

POWERED BY:

Arquivado

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

Léo M Moreira

[Resolvido] Problemas com addChild()

Recommended Posts

Salve galerinha.... olha eu aqui outra vez torrando...

Estou tentando me adequar ao AS3, até que os conceitos estão mais claros para mim, mas alguns errinhos me tiram do sério.

Seguinte, tenho uma classe externa (arquivo.as) que deveria ler um arquivo swf ou flv setado por um xml.

Meu package ficou assim

package studiom.tocaMidias{
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.*;
	import flash.display.*;

	public class Midias extends Sprite{
		public static const COMPLETE:String="completo";
		var midiaURL:String;
		var midiaTipo:String;
		var swf_mc:MovieClip;

		public function Midias(_midaURL:String, _midiaTipo:String) {
			midiaURL=_midaURL;
			midiaTipo=_midiaTipo;
		}

		public function verificaTipo():void {
			switch (midiaTipo) {
				case "swf" :
					tocaSWF();
					break;
				case "flv" :
					tocaFLV();
					break;
			}
		}

		private function tocaSWF():void {
			var leitor:URLLoader = new URLLoader();
			var requisicao:URLRequest=new URLRequest(midiaURL);
			leitor.load(requisicao);
			leitor.addEventListener(Event.COMPLETE, tocadorSWF);
			function tocadorSWF(e:Event):void {
				addChild(leitor);// -> Está a CACA!
			}
		}

		private function tocaFLV():void {
			trace("To tocando flv");
		}
	}
}

OBS: A classe que lê o XML e envia os dados para a package acima está ok.. o problema é essa danada mesmo.

 

No arquivo .fla está assim

var tocador:Midias=new Midias(XMLMidias.listaMidia.arquivo,XMLMidias.listaMidia.tipo);
	trace(tocador.verificaTipo());

Ao executar o seguinte erro alienígena aparece

1067: Implicit coercion of a value of type flash.net:URLLoader to an unrelated type flash.display:DisplayObject.

Socorro!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve galerinha.... olha eu aqui outra vez torrando...

Estou tentando me adequar ao AS3, até que os conceitos estão mais claros para mim, mas alguns errinhos me tiram do sério.

Seguinte, tenho uma classe externa (arquivo.as) que deveria ler um arquivo swf ou flv setado por um xml.

Meu package ficou assim

package studiom.tocaMidias{
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.*;
	import flash.display.*;

	public class Midias extends Sprite{
		public static const COMPLETE:String="completo";
		var midiaURL:String;
		var midiaTipo:String;
		var swf_mc:MovieClip;

		public function Midias(_midaURL:String, _midiaTipo:String) {
			midiaURL=_midaURL;
			midiaTipo=_midiaTipo;
		}

		public function verificaTipo():void {
			switch (midiaTipo) {
				case "swf" :
					tocaSWF();
					break;
				case "flv" :
					tocaFLV();
					break;
			}
		}

		private function tocaSWF():void {
			var leitor:URLLoader = new URLLoader();
			var requisicao:URLRequest=new URLRequest(midiaURL);
			leitor.load(requisicao);
			leitor.addEventListener(Event.COMPLETE, tocadorSWF);
			function tocadorSWF(e:Event):void {
				addChild(leitor);// -> Está a CACA!
			}
		}

		private function tocaFLV():void {
			trace("To tocando flv");
		}
	}
}

OBS: A classe que lê o XML e envia os dados para a package acima está ok.. o problema é essa danada mesmo.

 

No arquivo .fla está assim

var tocador:Midias=new Midias(XMLMidias.listaMidia.arquivo,XMLMidias.listaMidia.tipo);
	trace(tocador.verificaTipo());

Ao executar o seguinte erro alienígena aparece

1067: Implicit coercion of a value of type flash.net:URLLoader to an unrelated type flash.display:DisplayObject.

Socorro!!!

 

Consegui resolver, não sei se foi a solução mais inteligente, mas foi a que eu consegui com meu pouco conhecimento.

 

Eis a solução

 

                public function verificaTipo():loader{ //Mudei o tipo de retorno da função
                        var leitor:Loader;
                        switch (midiaTipo) {
                                case "swf" :
                                    leitor = tocaSWF();
                                        break;
                                case "flv" :
                                    leitor = tocaFLV();
                                        break;
                        }
                 return leitor;
                }

                private function tocaSWF():Loader{//A função agora retorna um loader
                        var leitor:Loader = new Loader();//Alterei o tipo para loader
                        var requisicao:URLRequest=new URLRequest(midiaURL);
                        leitor.load(requisicao);    
                        return leitor;
                }

                private function tocaFLV():Loader{
                        var leitor:Loader;
                        return leitor;
                }
        }

Ai então resgatando o objeto "LOADER" retornado eu o trato no stage, não precisando asism colocar o addChild dentro da função

Forte abraço a todos.

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.