【问题标题】:Flash / AS3: Load external swf *with animation*Flash / AS3:加载外部 swf *带动画*
【发布时间】:2010-10-01 11:58:30
【问题描述】:

我将三个外部 swf 文件加载到我的 Flash 电影中,代码如下:

import flash.display.*

var screens:Array = new Array(
    'screens/left.swf',
    'screens/center.swf',
    'screens/right.swf'
);

var loaders:Array = new Array();

function complete_listener(event:Event):void {
    event.target.content.width  = 341;
    event.target.content.scaleY = event.target.content.scaleX;
}

for (var i=0; i<screens.length; i++) {
    loaders[i] = new Loader();
    loaders[i].contentLoaderInfo.addEventListener(Event.COMPLETE, complete_listener);
    var url:URLRequest = new URLRequest(screens[i]);
    loaders[i].load(url);
    loaders[i].x = 341 * i;
    loaders[i].y = 0;
    addChild(loaders[i]);
}

我的三个虚拟 swf 一切正常,但是当我尝试加载使用某种动画(例如补间动画)的 swf 文件时,swf 不再显示...解决这个问题?谢谢!

【问题讨论】:

  • 这些动画是直接嵌入到加载的 SWF 中,还是依次从其他一些 SWF 中加载?
  • 它们直接嵌入在加载的 SWF 中。其实你可以看到第一帧(我猜)每隔几秒就会闪一下,真的很奇怪……
  • 可能是那些动画可能由于某种原因导致加载的 SWF 崩溃,例如从构造函数访问 stage 属性(或在它们实际添加到阶段之前) - 您是否有权访问代码那些动画?确保您在调试版本的 Flash 播放器上进行测试 - 这样您就会知道引发了什么样的错误/异常
  • 我认为问题在于,加载外部 swf 时没有显示舞台的背景颜色。我真的必须在外部 swf 的背景中绘制一个相同颜色的矩形还是有其他方法?

标签: flash actionscript-3 loader


【解决方案1】:

好吧,我无法正确理解您的问题.. 但我会建议您认为将stop() 放在您要加载的所有三个 swf 上。然后当它们被加载后,你就可以开始你的动画了。

function complete_listener(event:Event):void 
{
    event.target.content.width  = 341;
    event.target.content.scaleY = event.target.content.scaleX; 
    var myLoadedSWF:MovieClip =event.target.content as MovieClip;
    myLoadedSWF.play();
}

试试这个...

【讨论】: