【问题标题】:as3 play movieclip onceas3 播放影片剪辑一次
【发布时间】:2012-05-26 01:10:01
【问题描述】:

如果您能帮我解决这个问题,我将不胜感激。 我正在尝试在我的 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();
}

【问题讨论】:

  • 嗯。您对new MovieClip() 有什么期望?它有 1 个空帧,不能播放任何东西。 addFrameScript() 添加的回调被触发,就好像它们的代码刚刚写在指定的框架内一样。
  • 简而言之:您的movieClip 没有可添加脚本的框架。试试trace(movieClip.currentFrame);,它会输出0,注意movieClip.currentFrame 在设计时创建的MovieClips 总是大于0。

标签: actionscript-3 flash loader movieclip


【解决方案1】:
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
    }
}

这应该可以满足您的需求。

【讨论】:

    【解决方案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(); 
    }
    

    【讨论】:

      【解决方案3】:

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

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

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

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-12
        • 1970-01-01
        相关资源
        最近更新 更多