加载外部as2电影

时间:2011-07-06 09:09:23

标签: actionscript-3 actionscript-2

我需要将swf文件加载到新的swf影片中。我需要检查最后一帧以启动影片剪辑等。以下代码中的一切正常。我正在使用as3并且正在加载外部as3 swf电影。我收到消息时尝试加载外部as2 swf电影时问题开始了:TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::symbol_name to flash.display.MovieClip。有没有办法可以将以下代码转换为as2 ????还有另外一种方法吗?请注意我是一个绝对的Flash初学者,我已经尽力在as3中做到这一点,现在我没有看到任何替代方案,但使用as2!非常感谢!

var swfLoader:Loader = new Loader();
var swfFile:URLRequest = new URLRequest("file.swf");
var container:MovieClip= new MovieClip();

swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadedHandler);

var currentSWF:MovieClip = new MovieClip();

swfLoader.load(swfFile);

container.addChild(swfLoader);
addChild(container); 

function swfLoadedHandler(e:Event):void {
    currentSWF = MovieClip(swfLoader.content);  
    currentSWF.addEventListener(Event.ENTER_FRAME, checkLastFrame);

    function checkLastFrame(e:Event):void { 
        if (currentSWF.currentFrame == currentSWF.totalFrames) {
            currentSWF.stop();
            bob.play();
            if (bob.currentFrame == 2) {
                bob.stop();
            }
        }    
    }
}

1 个答案:

答案 0 :(得分:0)

在这里将AS2内容加载到AS3的问题有一个很好的答案:Load AS2 SWF Into AS3 SWF and pass vars in URL。基本上,如果您无法编辑正在加载的AS2内容,则需要在AS2中创建桥接加载程序。

编辑:此(未经测试的)代码应该在AS2中执行您需要的代码:

import mx.utils.Delegate;

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.onLoadComplete = Delegate.create(this, loadComplete);
var targetMC:MovieClip = createEmptyMovieClip("container",getNextHighestDepth();
mcLoader.loadClip("file.swf",targetMC);

function loadComplete(evt:Object):Void {
    targetMC.onEnterFrame = Delegate.create(this,checkFrame);
}

function checkTargetFrame(evt:Object):Void {
    if(targetMC._totalframes == targetMC._currentframe) {
        targetMC.stop();
        targetMC.onEnterFrame = null;
        bob.onEnterFrame = Delegate.create(this,checkBobFrame);
        bob.play();
    }
}

function checkBobFrame(e:Object):Void {
    if(bob._currentframe == 2) {
        bob.onEnterFrame = null;
        bob.stop();
    }
}