2011-04-07 39 views
0

我使用OSMF的SWFElement来加载SWF文件到主应用程序,但主应用程序根本无法检测到来自子SWF的事件,试图四处搜索但未找到任何解决方案从OSFF中的SWFElement检测事件

代码使用Flash CS3 Flash时间轴

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

回答

0

添加代码在儿童Flash的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; 

代码,我想出了以下solution.I'm不是S如果有更好的方法,但它工作正常。

 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); 
    } 
}