将 as3 加载到 as2 中,仅在_root上工作



我在as2中做了一个简单的测试示例。它包含两个带有以下处理程序的按钮。

_根:

on (release)
{
    this.loadMovie("AS3.swf");      
}

_root.test.testmc:

on (release)
{
    test.testmc.loadMovie("AS3.swf");       
}

AS3.swf是一个视频播放器(使用youtube as3 api(。如果我将其加载到_root它可以工作,但如果我想将其加载到任何其他地方,它就不起作用。我从adobe搜索并找到了这个:

"用 ActionScript 1.0 或 2.0 编写的 SWF 文件无法加载用 ActionScript 3.0 编写的 SWF 文件。这意味着在 Flash 8 或 Flex Builder 1.5 或更早版本中创作的 SWF 文件无法加载 ActionScript 3.0 SWF 文件。

此规则的唯一例外是,只要 ActionScript 2.0 SWF 文件以前未将任何内容加载到其任何级别中,ActionScript 2.0 SWF 文件就可以将自身替换为 ActionScript 3.0 SWF 文件。ActionScript 2.0 SWF 文件可以通过调用 loadMovieNum(( 来执行此操作,将值 0 传递给 level 参数。

我的代码的"_root部分"是否因为上述"例外规则"而起作用?我是 Flash 的新手(是的,你可以问为什么我从 as2 开始,不幸的是不是我的选择......(,我想知道我的想法是否正确。此外,如果有任何类型的解决方法(除了重写 AS3 中的所有内容(,请告诉我(也许使用本地连接?

试试这个:

在 AS2 的根目录下:

test.testmc.loadMovie("AS3.swf");

或者在您想要 AS3 播放器的 MC 中:

this.loadMovie("AS3.swf");

您的第二个代码正在调用test.testmc.test.testmc因为它已经放置在"testmc"中,因此您无需使用完整路径引用它。建议对此类操作使用相对路径。

因此,在 mc testmc 内部,您只需要执行this.loadmovie,而不是搜索test.testmc INSIDE testmc。

希望这就是你要找的。

最新更新