2012-03-26 30 views
0

我在as2中做了一个简单的测试示例。这包含两个按钮和以下处理程序。将as3加载到as2只能在_root上工作

_root:

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 3.0 SWF文件替换自身,只要ActionScript 2.0 SWF文件先前未将任何内容加载到其任何文件中ActionScript 2.0 SWF文件可以通过调用loadMovieNum(),将值0传递给level参数来完成此操作。“

由于上述“例外规则”,我的代码的“_root部分”是否工作?我是新来的闪光灯(是啊,你可以问为什么我开始与as2,不幸的是不是我的选择...),我不知道我的想法是否正确。此外,如果有任何形式的解决方法(除了重写AS3中的所有内容),请告诉我(可能使用localconnection?)。在AS2的根

+0

我相信你是正确的,'_root.loadMovie()'和'loadMovieNum()'等价。如果您不想将播放器swf加载到根目录下,那么您可能不得不考虑将应用程序移植到AS3或使用YouTube的AS2 API重写视频播放器:https://developers.google.com/ youtube/flash_api_reference_as2 – shanethehat 2012-03-26 12:55:52

+0

感谢您的答案,不幸的是,YouTube的as2 api将继续运行,直到10月14日,我猜那之后它不会工作。我想我会试图说服老板忘记AS2并投资将所有东西移植到AS3。 – Alex 2012-03-26 13:14:11

回答

0

试试这个

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

或MCü要AS3播放器:

this.loadMovie("AS3.swf"); 

你的第二个代码调用test.testmc.test.testmc,因为它已经是放置在“testmc”中,所以你不需要参考它的完整路径。建议您使用相对路径进行这样的事情。

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

希望这就是你要找的。

+0

我得到相同的结果(不工作)。我很确定我的代码是正确的,可能没有在开始的帖子中解释它,对此抱歉。无论如何,谢谢你的尝试。 – Alex 2012-03-26 13:32:20