将影片loadMovie入一个影片剪辑后,会替换原影片剪辑中的所有内容
做的一个项目需要加入换肤功能,为了方便维护,将皮肤做成swf放在主文件外部,调用主文件时,首先会载入皮肤文件。但是,项目的主要功能做在影片剪辑中,并继承MovieClip类。如果要在这个影片剪辑中载入皮肤文件,则会冲掉原影片剪辑中的所有内容(如题)。
我的影片剪辑中并没有内容,它绑定一个类文件,所有的组件都是利用类文件中的方法从库中动态载入的。既然影片剪辑中没有内容,能否就直接载入皮肤文件呢?首先做个实验再说:
1createEmptyMovieClip("a", 0);
2mcl = new MovieClipLoader();
3a.fun = function() {
4 trace("A!");
5};
6onLoadInit = function (mc) {
7 trace("load b.swf ok");
8 trace("load done, a.fun:"+mc.fun);
9};
10mcl.addListener(this);
11mcl.loadClip("b.swf", a);
12trace("load start, a.fun:"+a.fun);
测试的结果如下:
load start, a.fun:[type Function]
load b.swf ok
load done, a.fun:undefined
可见,loadMovie不仅替换掉了影片剪辑中的所有视觉内容,还清除掉了所有的变量、函数。看来项目必须从继承改为合成了。
- 文章ID:218
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/loadmovie/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。