2

如果您能帮我解决这个问题,我将不胜感激。我正在尝试在我的 ipad 一个 MovieClip 应用程序中播放一次。我试图以这种方式停止,但电影不会停止

var loader:Loader = new Loader();
var swfFile:URLRequest= new URLRequest("/test.swf");
loader.load(swfFile);

movieClip = new MovieClip();
movieClip.addChild(loader);
movieClip.addFrameScript(movieClip.totalFrames - 1, callbackFunc);
movieClip.play();
private function callbackFunc():void
{
movieClip.stop();
}
4

3 回答 3

2
var loader:Loader = new Loader();
var swfFile:URLRequest= new URLRequest("/test.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onFileLoaded);
loader.load(swfFile);

//I assume you have declared 'movieClip'?
//if not do:
//var movieClip:MovieClip;


private function onFileLoaded(e:Event):void
{
    movieClip = loader.content;
    addChild(movieClip);
    movieClip.play();
    addEventListener(Event.ENTER_FRAME, onEnter, true, 0, false);
}

private function onEnter(e:Event):void
{
    if (movieClip.currentFrame == movieClip.totalFrames)
    {
        movieClip.stop();
        removeEventListener(Event.ENTER_FRAME, onEnter, true, 0, false);
        //do other stuff
    }
}

这应该做你需要的。

于 2012-05-18T13:50:39.507 回答
2
var loader:Loader = new Loader(); 
var swfFile:URLRequest= new URLRequest("/test.swf"); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
loader.load(swfFile); 

private function callbackFunc():void 
{ 
    movieClip.stop(); 
} 

function onCompleteHandler(loadEvent:Event)
{
    movieClip = MovieClip(loadEvent.currentTarget.content);
    addChild(movieClip);

    movieClip.addFrameScript(movieClip.totalFrames - 1, callbackFunc); 
    movieClip.play(); 
}
于 2012-05-18T13:51:08.467 回答
2

您的代码将不起作用,因为它不是movieClip播放的,而是您加载到其中的外部 SWF 将播放它的关键帧。创建的movieClip只有 1 个关键帧,并且在 1 个关键帧上放置了外部 SWf。您应该将该stop()函数添加到外部 SWF 中。如果您这样做更正外部 SWF 播放一次,然后停止。

您还可以将外部 SWF 包装到一个新的 MovieClip 中,然后将您已有的代码放入其中...

或者,如果您想要完全控制,您可以调整外部 SWF 代码,以便在播放最后一帧时调度一个事件。在 SWF 上提供自定义停止/重播功能,然后您可以从父 SWF 调用该功能。

祝你好运!

于 2012-05-18T13:54:01.820 回答