問題1:
ArgumentError: Error #2180: 如果 AVM1 內容(AS1 或 AS2)已加載到 AVM2 (AS3) 內容中,則不可將其移動到 displayList 的其他部分。
2010-08-05 15:21:43| 分類:隨記 | 標籤:|字號大中小 訂閱
今天做一個東西時,無意中發現了這個問題。
問題描述:我們都知道flash player有兩個虛擬機AVM1和AVM2。前者是flash player9以下的版本運行時所需要的,它用來解析as1和as2。後者是專門爲as3開發的,用來解析as3。
我用flash player10加載了一個player8及以下的swf(2.0的),並且把content添加到顯示列表中。結果就出現這樣的問題。
ArgumentError: Error #2180: 如果 AVM1 內容(AS1 或 AS2)已加載到 AVM2 (AS3) 內容中,則不可將其移動到 displayList 的其他部分。
at flash.display::DisplayObjectContainer/addChild()
at flash.display::Stage/addChild()
at _fla::MainTimeline/com()
經測試,只有flash player10以上得版本會出這樣的問題,換成9就沒問題了。不知道player10是什麼搞的,用的不是AVM2嗎?也就是隻要你用player 10加載player9以前版本發佈的swf就會出錯。
問題分析:我們來看看錯誤描述,“如果 AVM1 內容(AS1 或 AS2)已加載到 AVM2 (AS3) 內容中,則不可將其移動到 displayList 的其他部分”。說明as1或as2已經加載進來了,只是有把它移動到其他的現實列表導致這樣的問題。
問題解決:直接把加載swf的loader加載到顯示列表,這樣就不會出問題。