2012-03-26 29 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