Actionscript 3 从OSMF中的SWFELENT检测事件
我在我的项目中使用OSMF的SWFElement将SWF文件加载到主应用程序中,但主应用程序根本无法检测子SWF中的事件,尝试四处搜索,但未找到任何解决方案 主应用程序中的代码Actionscript 3 从OSMF中的SWFELENT检测事件,actionscript-3,osmf,Actionscript 3,Osmf,我在我的项目中使用OSMF的SWFElement将SWF文件加载到主应用程序中,但主应用程序根本无法检测子SWF中的事件,尝试四处搜索,但未找到任何解决方案 主应用程序中的代码 mediaPlayerSprite = new MediaPlayerSprite(); var swfElement:SWFElement = new SWFElement(); swfElement.resource = new URLResource("file:///C:/Users/user/docume
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 CS3在子Flash SWF中编码在Flash时间线中添加代码
this.dispatchEvent(new Event('animationEnd') );
我提出了以下解决方案。我不确定是否有更好的方法,但效果很好
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 );
}
}