Já percebi onde está o erro mas continuo sem perceber porque é que
acontece.

O código do MyLogvent é o seguinte:

        public class MyLogEvent extends Event
        {
                // Se usar esta string para o tipo de evento dá erro
                //public static const CONTENT_LOG       :String = "contentLog";
                // Se usar esta já não dá erro...
                public static const CONTENT_LOG :String = "myContentLog";

                private var _text:String = "";
                public function get text() : String
                {
                        return this._text;
                }

                private var _logType:String = "";
                public function get logType() : String
                {
                        return this._logType;
                }

                public function MyLogEvent(     type:String,
                                                                logType:String,
                                                                logText:String,
                                                                
bubbles:Boolean=true,
                                                                
cancelable:Boolean=false)
                {
                        super(type, bubbles, cancelable);

                        this._logType = logType;
                        this._text = logText;
                }

                public override function clone():Event
                {
                        return new MyLogEvent(  this.type,
                                                                this._logType,
                                                                this._text,
                                                                this.bubbles,
                                                                
this.cancelable);
                }

        }

O erro surge no handler de uma classe onde penduro um listener para o
evento MyLogEvent.CONTENT_EVENT. Se o MyLogEvent.CONTENT_EVENT for
igual a "contentLog" o erro surge. Se mudar o valor da constante para
"myContentLog" o erro desaparece.
Ponderei a hipótese de algures estar a ser disparado um outro evento
qualquer cujo tipo também fosse definido como "contentLog", fazendo
com que o handler se baralhasse com o tipo de evento que estava a
receber. Mas nem eu uso essa definição noutro tipo de evento nem há
outras classes que o usem (procurei na documentação da adobe e não
encontrei nada).

Enfim, não encontrei a solução mas caso isto aconteça a alguém, deixo
a sugestão: experimentem mudar o nome da constante que define o tipo
do evento.



On Jan 27, 3:03 pm, Carolina Torres <[email protected]> wrote:
> Experimentei essa solução mas acontece o mesmo...
>
> var context:LoaderContext =  new LoaderContext(false,
> ApplicationDomain.currentDomain);
> // O método load só aceita um argumento por isso fiz a atribuição do
> loaderContext antes do load
> _swfLoader.loaderContext = context;
> _swfLoader.load(_contentURL);
>
> On Jan 26, 9:00 pm, Nuno Rosa <[email protected]> wrote:
>
>
>
> > Isso está relacionado com o ApplicationDomain.
> > Por defeito as definições contidas no swf que estás a carregar estão num
> > aplication domain diferente da app principal.
>
> > Se quiseres manter as mm definições em ambos, podes definir qual o contexto.
>
> > var context:LoaderContext =  new LoaderContext(false,
> > ApplicationDomain.currentDomain);
> > loader.load(url,context);
>
> > 2010/1/26 Carolina Torres <[email protected]>
>
> > > Olá a todos.
>
> > > Numa aplicação AIR estou a tentar detectar eventos vindos de um swf
> > > que é carregado usando um SWFLoader mas surge-me o seguinte erro:
>
> > > TypeError: Error #1034: Type Coercion failed: cannot convert
> > > mylogev...@66c67c1 to MyLogEvent.
>
> > > Parece que ele está a comparar uma instância de MyLogEvent à própria
> > > classe MyLogEvent mas não percebo porquê...
> > > Aqui está o modo como faço load do swf e como lhe penduro o listener
> > > para o evento do tipo MyLogEvent:
>
> > >                private function loadContent(url:String) : void
> > >                {
> > >                        var loader:SWFLoader = new SWFLoader();
> > >                        loader.autoLoad = false;
> > >                        loader.loadForCompatibility = true;
>
> > >                        loader.addEventListener(IOErrorEvent.IO_ERROR,
> > > ioErrorSWFHandler);
>
> > >                        loader.addEventListener(Event.COMPLETE,
> > > loadSWFHandler);
> > >                        loader.load(url)
> > >                }
>
> > >                private function loadSWFHandler(event: Event): void
> > >                {
> > >                        event.currentTarget.removeEventListener(event.type,
> > > arguments.callee);
>
> > >                        var loader:SWFLoader = SWFLoader(event.target);
> > >                        loader.soundTransform = new
> > > SoundTransform(this.soundVolume, 0);
>
> > >                        // Aqui penduro o listener no content do
> > > loader
>
> > >  loader.content.addEventListener(MyLogEvent.CONTENT_LOG,
> > > onLogEvent);
> > >                }
>
> > >                private function onLogEvent(event:MyLogEvent) : void
> > >                {
> > >                        // é aqui que tudo rebenta...
> > >                        trace("hello");
> > >                }
>
> > > --
> > > Recebeu esta mensagem porque está inscrito no grupo "Mailing List da
> > > Comunidade Portuguesa de Rich Internet Applications -www.riapt.org" dos
> > > Grupos do Google.
>
> > > Para publicar uma mensagem neste grupo, envie um e-mail para
> > > [email protected].
> > > Para anular a inscrição neste grupo, envie um e-mail para
> > > [email protected] <riapt%[email protected]>.
> > > Para ver mais opções, visite este grupo em
> > >http://groups.google.com/group/riapt?hl=pt-PT.

-- 
Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google.

Para publicar uma mensagem neste grupo, envie um e-mail para 
[email protected].
Para anular a inscrição neste grupo, envie um e-mail para 
[email protected].
Para ver mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT.

Responder a