as3播放movieclip一次

时间:2012-05-18 12:49:19

标签: actionscript-3 flash loader movieclip

如果你帮我解决这个问题,我将非常感激。 我试图在我的应用程序中播放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();
}

3 个答案:

答案 0 :(得分: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
    }
}

这应该做你需要的。

答案 1 :(得分: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(); 
}

答案 2 :(得分:2)

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

您也可以将外部SWF包装到新的MovieClip中,并将已有的代码放到它上面......

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

祝你好运!