Flash 使用不同于默认值的其他swf打开swf文件
希望这不会被认为是问同一个问题两次 所以我正在开发一个Flash网站(在AS2中),它有一个外部索引swf,它使用Flash 使用不同于默认值的其他swf打开swf文件,flash,actionscript-2,Flash,Actionscript 2,希望这不会被认为是问同一个问题两次 所以我正在开发一个Flash网站(在AS2中),它有一个外部索引swf,它使用loadMovie(“subfo1.swf”,placetoshowwf)加载子swf文件。它们依次加载一个xml文件,该文件告诉它要加载什么内容。一切都很顺利,但我们想在索引swf中添加一个按钮,用于打开一个子swf文件,其中包含一个或两个变量的一个或两个不同值 不幸的是,只需添加一个按钮 loadMovie("foo1.swf", placeToShowSwf); placeTo
loadMovie(“subfo1.swf”,placetoshowwf)
加载子swf文件。它们依次加载一个xml文件,该文件告诉它要加载什么内容。一切都很顺利,但我们想在索引swf中添加一个按钮,用于打开一个子swf文件,其中包含一个或两个变量的一个或两个不同值
不幸的是,只需添加一个按钮
loadMovie("foo1.swf", placeToShowSwf);
placeToShowSwf.openProject(x);
不起作用,我假设是因为对未完全加载的文件调用了openProject(x)
。我知道代码没有问题,因为我在别处做了一个按钮,只调用placetoshowwf.openProject(x)
,没有任何问题
我看到了两种解决方案,我都不知道该怎么做
loadMovie(newfoo1.swf(x),placetoshowwf)
或类似的东西就好了placetoshowwwf.openProject(x)
李>
有人对这两种解决方案中的任何一种都有任何指导,或者是我豌豆般的大脑无法理解的其他方式吗?第二点是你应该做的。不幸的是,你仍然停留在ActionScript1的土地上,而ActionScript3已经推出了几年了。因此,我不知道确切的语法(我自己从ActionScript2上的flash开始),但是#2(等待SWF完成加载,然后告诉它做什么)是我要做的
如果您不介意学习一点AS2(您通常可以在没有太多问题的情况下混合AS1和AS2),那么您应该看看MovieClipLoader。它提供回调,告诉您子SWF何时完成加载。三种简单的方法: (1) -反转命令的方向。也就是说,在父SWF中,您有:
projectType = "x";
loadMovie("foo1.swf", placeToShowSwf);
子(加载的)SWF具有以下特性:
openProject( _parent.projectType );
你明白了。如果子SWF是从不同的服务器加载的,这将不起作用,除非您解决跨域脚本问题
(2) -等待MC加载。不幸的是,AS2没有可供使用的内置加载事件,因此常用的方法是使用如下所示的OneInterFrame:
someMovieClip.onEnterFrame = function() {
if ( path_to.placeToShowSwf.openProject ) {
path_to.placeToShowSwf.openProject(x);
this.onEnterFrame = null;
}
}
如果您希望在方法可用时立即调用该方法,则可以这样做;如果要等待子swf完全加载,则需要检查子swf的getBytesLoaded()
和getByTestTotal()
方法
(3) 使用像MovieClipLoader这样的组件进行加载-只需跟随即可。从表面上看,这类似于(2),但细节隐藏在MovieClipLoader类中。fenomas的回答相当不错,但也有一个不太“黑”的答案 如果使用AS2,请使用MovieClipLoader类加载SWF。 它有您可以监听的事件,您将对onLoadInit感兴趣 事件虽然人们可能会凭直觉认为它是在加载过程中被触发的 是初始化的,应该使用onLoadComplete,但事实并非如此 当所有字节完成下载时,将触发onLoadComplete 当所有字节完成下载并且类 在已加载的swf中进行初始化(因此您可以访问已加载的swf的 方法和属性) 请查看as2.0文档中MovieClipLoader>onLoadInit中的代码示例
祝您好运您所采用的方法是正确的,只是您需要等待onLoadInit回调,然后才能尝试访问您的子电影剪辑