我需要将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();
}
}
}
}
答案 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();
}
}