обнаружить событие из SWFElement в OSMF - PullRequest
0 голосов
/ 07 апреля 2011

Я использую SWFElement OSMF для своего проекта, чтобы загрузить SWF-файл в главное приложение, но основное приложение вообще не может обнаружить событие от дочернего SWF, попытался выполнить поиск, но не нашел решения

КОД в главном приложении

 mediaPlayerSprite = new MediaPlayerSprite();
 var swfElement:SWFElement = new SWFElement();
 swfElement.resource = new URLResource("file:///C:/Users/user/document/OXO/SWF/sampleswfanimation.swf");
 // this one not work
 swfElement.addEventListener('animationEnd',onSWFEnd );

 //this one not work
 var loadTrait:LoadTrait = mediaElement.getTrait(MediaTraitType.LOAD) as LoadTrait;
 loadTrait.addEventListener('animationEnd',onSWFEnd );
//this one not work too
var displayTrait:DisplayObjectTrait = mediaElement.getTrait(MediaTraitType.DISPLAY_OBJECT) as DisplayObjectTrait;
displayTrait.addEventListener('animationEnd',onSWFEnd );
displayTrait.displayObject.addEventListener('animationEnd',onSWFEnd );

        addChild(mediaPlayerSprite);
        mediaPlayerSprite.media = swfElement;

КОД в дочернем Flash SWF с использованием Flash CS3, добавьте код в FLASH TimeLine

this.dispatchEvent(new Event('animationEnd') );

1 Ответ

0 голосов
/ 07 апреля 2011

Я придумала следующее решение. Я не уверена, есть ли лучшие способы, но оно работает нормально.

      mediaPlayerSprite = new
      MediaPlayerSprite();
      var swfElement:SWFElement = new SWFElement();
      swfElement.resource = new URLResource("file:///C:/Users/user/document/OXO/SWF/sampleswfanimation.swf");
 swfElement.addEventListener(MediaElementEvent.TRAIT_ADD,onTraitAdd);  

function onTraitAdd(evt:MediaElement):void
{
   if(evt.traitType == "displayObject")
  {
     var swf:SWFElement = evt.currentTarget as SWFElement;
     var displayTrait:DisplayObjectTrait  = swf.getTrait( MediaTraitType.DISPLAY_OBJECT ) as DisplayObjectTrait;
     var loader:Loader = Loader(displayTrait.displayObject);
     loader.content.addEventListener( 'animationEnd',onSWFEnd );
  }
}
...