2012-02-29 88 views
1

好吧,我在我的繩索的盡頭。據稱不存在公共職能?

我有一個Flash Professional CS5.5,Adobe AIR,Actionscript 3項目。到目前爲止,我從來沒有遇到過這個問題...

我有一個自定義的類叫Prefs,我寫了自己。這個類有許多功能。我幾周前寫的那些,我可以在沒有問題的情況下撥打我的代碼。但是我今天寫的「同一類」中的錯誤正在拋出一個錯誤。

這一個工程:

public function UserFetch(ID:String):* 
{ 

這一個不:

public function Set(setting:String, val:*):void 
{ 

我打電話都以同樣的方式。在文檔類「base」中:

package { 

    import flash.display.MovieClip; 
    import trailcrest.prefs.prefs; 

    public class base extends MovieClip { 

     public static var Prefs:prefs = new prefs(); 
    } 

} 

在我的時間軸代碼中。

base.Prefs.UserFetch("musictoggle"); 
base.Prefs.Set("musictoggle", true); 

第一火很好。第二個給出這個錯誤:

Scene 1, Layer 'Layer 1', Frame 1, Line 4 1061: Call to a possibly undefined method Set through a reference with static type prefs.

這是怎麼回事?我可以找到完全沒有合理的理由,爲什麼會發生這種情況。就像我說的那樣,它從來沒有發生過,也沒有發生過任何其他類別或功能。

+0

在此處顯示的代碼中,您尚未聲明任何SetMusicVolume函數(您已聲明一個名爲Set的函數)。 – 2012-02-29 23:01:44

+0

粘貼錯誤的。我修好了它。 - 注意:問題是一樣的。未解決 - – CodeMouse92 2012-02-29 23:02:33

+0

現在您必須解決您列出的錯誤。你的錯誤說未定義的方法'SetMusicVolume',你現在說的不是問題方法。 – 2012-02-29 23:04:17

回答

1

經過在聊天中的一些討論後,我們發現閃光沒有采取在prefs.as-文件中所做的更改。更改類的名稱解決了問題(這可能是一個奇怪的編譯器緩存問題)。

+0

我見過的最奇特的事情之一。但謝謝你幫我找到問題。 – CodeMouse92 2012-03-01 00:11:11

+0

「SET」是一個關鍵字,你不應該使用它。至於這個問題,你需要將「設置」功能設置爲靜態。當他改變班級的名字並且沒有意識到時,他有機會添加它。如果將該類的實例分配給靜態,則只能訪問該類中的靜態方法。 – 2012-03-01 00:59:02

+1

'Set'不是關鍵字('set'是),它工作正常。 Set不需要設置爲靜態 - 他訪問的基類中有一個prefs類的靜態實例。問題解決了,它與靜態無關。 – 2012-03-01 08:37:30