2012-08-28 36 views
1

我跟着李Brimelow的教程(part 1,part 2),但不知何故我的項目不能按預期的方式工作。問題與基本的AS3工人類

目前,出版 「SRC/Secondary.as」,以試圖運行 「的src/Main.as」 時的 「www /資產/ SWF/secondary.swf」 工作正常,但是,錯誤顯示出來:

Exception fault: TypeError: Error #1007: Instantiation attempted on a non-constructor. 
    at Main/init()[/Volumes/DOCUMENTS/Tests/AS3/test-workers/src/Main.as:52] 
    at Main()[/Volumes/DOCUMENTS/Tests/AS3/test-workers/src/Main.as:32] 

如果有人有時間,你可以看看my code on Github,也許看到我搞砸了?謝謝一堆!

+0

我想嘗試在你的Secondary構造函數中添加一個'super()'調用。我還建議查看Adobe Labs上的[Flash Builder 4.7 beta](http://labs.adobe.com/technologies/flashbuilder4-7/),因爲它已經支持創建和調試Worker。 – NoobsArePeople2

+0

@ NoobsArePeople2 - 我認爲如果你自己不這樣做,flash會自動添加一個super()給任何構造函數 – Neil

+0

@Neil:不,除非明確地調用它,否則不會添加super()。但是,這並不意味着沒有構造函數,這是錯誤告訴我的。 – jansensan

回答

2

正如您的錯誤消息所示:您的Main.init()方法中52行中提出的問題。你嘗試做的是創建一個SecondarySWF的新實例。我會說,Secondary類到SecondarySWF的嵌入無法正常工作,所以它在init方法中不可用。你應該在你的init方法的第一行設置一個斷點,當調試器到達這一點時,檢查SecondarySWF中的內容。我預計該變量中沒有任何內容,因此您的new SecondarySWF()實際上意味着是new null()

因爲您將您的secondary.swf嵌入指定的MIME類型,Flex編譯器會忽略它,因爲它無法檢測到加載文件中的實際數據類型。我找到了this post on Adobe's cookbook page,它解釋了除了使用[Embed]添加文件外,您還必須執行哪些操作。希望這會符合你的需求。

+0

哇,你是對的,它實際上是空的......呃,好吧,我會看看你發送的這個提示是否有效。 – jansensan

+0

因此,我設法讓SWF不爲空(某種程度上需要刪除並重新創建項目......)目前我遇到的問題是工作人員不受支持的事實?我加的痕跡一些能力,我得到: \t Capabilities.version:MAC 11,4,400,252 \t Capabilities.isDebugger:真 \t WorkerDomain.isSupported:假 你可以在https://github.com檢查代碼/jansensan/test-as3-workers/blob/master/src/Main.as – jansensan

+0

似乎是你沒有最新版本的Flash Player。應該是11.4.402.265。可能是因爲你的版本是測試版或幾天後發佈的補丁版。您應該更新到最新版本並重試。 [在這裏你可以得到系統的最新版本](http://www.adobe.com/support/flashplayer/downloads.html) –