2011-03-03 76 views
2

在Flash CS5中,我得到
1195:試圖訪問不可訪問的方法testFunc通過引用與靜態類型文檔。
編譯時無法理解的情況,我已經徹底搞清楚了。AS3無法訪問的方法 - 一切都明確公開

MyDoc.as - 我的文檔類。

package { 
    import flash.display.MovieClip; 

    public class MyDoc extends MovieClip { 
     public function MyDoc() {} 

     public function myOtherFunc() : void {} 

     public function myFunc() : void {} 
    } 
} 

MyClass.as - 鏈接到沒有代碼僅包含TLF文本框的一幀影片剪輯。

package { 
    import flash.display.MovieClip; 

    public class MyClass extends MovieClip { 
     public function MyClass(myDoc : MyDoc) { 
      myDoc.myFunc(); 
     } 
    } 
} 

這就是我的FLA的範圍 - 一個影片剪輯。空的階段,單幀沒有代碼就可以了。

讓我感到困惑的是,如果我將看起來不相關的TLF文本框從等式中移出,或者將其更改爲經典文本框,刪除它,或者取消其包含的MC的鏈接,我可以獲得無錯誤編譯來自MyClass。
我也可以通過刪除myOtherFunc()的定義或將它移動到myFunc()的下面來解決錯誤,我必須做幾次才能說服自己這是真的。

關於發生了什麼的任何想法?

更新:我剛剛在朋友的CS5版本上確認了相同的行爲。他使用Mac而不是我的Windows安裝程序,他只安裝了CS5版本,而我同時使用CS5和CS4。這真的好像它可能是一個Flash漏洞...

+0

首先構造不該沒有返回類型。嘗試重命名您的文檔類。可能由於名稱衝突而被TLF覆蓋? – Roy 2011-03-03 10:48:57

+0

出於某種原因,我一直認爲聲明返回類型:void等於省略了返回類型,但這並不是真的有意義。有趣的是,這個建議修正了這個例子,但不是它從中派生出來的代碼,所以我刪除了構造函數的返回類型聲明並重新編譯並編輯了我的問題。我也改名爲Doc,但這並沒有辦法。 – dbplunkett 2011-03-04 01:51:24

回答

3

您可能需要在您的源路徑的textLayout.swc http://labs.adobe.com/downloads/textlayout.html

注:成功的答案是評論

+1

在聽取了Roy的建議並重新將代碼重新燒錄之後,它確實看起來與TLF領域有關。我從來沒有碰過SWC源碼路徑,所以我認爲它是默認值。假設$(AppConfig)指向我的研究表明應該在的位置,C:\ Program Files \ Adob​​e \ Adob​​e Flash CS5 \ Common \ Configuration,該目錄似乎指向現有的SWC文件。我無法弄清楚如何驗證這一點 - 我擔心這可能會讓我感到困惑,因爲我安裝了CS4和CS5。另外,這裏是我的AS3設置: http://cl.ly/1V3z2a3r2K1o2O1L2W1S – dbplunkett 2011-03-04 02:04:06

+3

TLF似乎存在很多問題。我還沒有任何直接的經驗,但一個不斷提出的建議是通過將「默認鏈接」更改爲「合併到代碼」來將swc合併到swf中http://help.adobe.com/zh_CN /flash/cs/using/WSb03e830bd6f770ee-4b0db644124bbdb363d-8000.html#WSb03e830bd6f770ee72b69dc71257a25aa72-8000 ...我不確定這是否與您的問題有關,甚至是理想的解決方案,但可能值得一試。 – 2011-03-04 09:33:39

+1

完全做到了!非常感謝!多麼痛苦的TLF是... – dbplunkett 2011-03-04 13:04:34