当我加载包含added_to_stage方法的外部swf时,我遇到了问题。它执行两次。我不明白它为什么这么做?如果swfs都有自己的舞台,我也很有意思?
感谢您的回答
我正在使用greensock库来处理加载。
Flash预加载器:
package {
import flash.display.MovieClip;
import com.greensock.loading.SWFLoader;
public class Preloader extends MovieClip
{
public function Preloader()
{
var loader : SWFLoader = new SWFLoader("Prototype1.swf");
loader.load();
addChild(loader.content);
}
}
}
外部SWF:
public class Prototype1 extends MySprite
{
public function Prototype1()
{
addEventListener(Event.ADDED_TO_STAGE, onAdded);
}
private function onAdded(e:Event):void
{
trace("onAdded");
}
}
OUTPUT:onAdded onAdded
答案 0 :(得分:1)
greensock文档说:
suppressInitReparentEvents: Boolean
- 如果为true,则SWFLoader将抑制通常在将子加载的swf重新分配到ContentDisplay时调度的REMOVED_FROM_STAGE和ADDED_TO_STAGE事件(当显示列表中的任何DisplayObject获得重定位时,这总是发生在Flash中 - SWFLoader最初默认是绕开它,以避免在以某种方式编码子swf时可能出现的常见问题。)
因此,您可以将Preloader.as中的代码更改为:
var loader:SWFLoader = new SWFLoader("Prototype1.swf", {suppressInitReparentEvents: true});
您只需拨打onAdded
一次电话。