2011-10-24 19 views
0

好吧,首先,我已經在各處尋找這個東西,但似乎每個答案要麼過於複雜,要麼根本不起作用,而且我知道肯定應該有一個更簡單的實現我所需要的方式。AS3:從fla文件中訪問類public var

因此,直到今天,我總是在時間線內進行編碼。但現在我明白了爲什麼我應該在單獨的類文件中編碼。不過,爲了簡單起見,我仍然希望在時間軸中包含代碼片段。

所以在我的船級我有這行代碼:

public var speed:int = 2 + Math.ceil(Math.random() * 4) 

而在我的時間表我的代碼:

import Ship; 
trace(Ship.speed) 

我無法跟蹤顯示速度。類文件自身完美執行,但當我嘗試訪問其速度變量時(如上面的時間軸),我得到這個:

場景1,圖層'Actions',第1幀,第2行1119:訪問可能未定義的屬性速度通過靜態類型的引用類。

所以一個簡單的問題,併爲此道歉,但任何人都可以給我一個簡單的方法來跟蹤從Ship.as類文件的速度?

在此先感謝!

回答

2

你需要創建一個船舶實例,就像這樣:

import Ship; 
var ship:Ship = new Ship(); 
trace(ship.speed); 

OR

你可以聲明速度爲靜態變量,而不需要一個實例來訪問它(但我認爲這意義不大):

public static var speed:int = 2;//or whatever 

要了解更多關於在AS3的靜態變量和方法,檢查該回應:Actionscript 3: Can someone explain to me the concept of static variables and methods?

+0

感謝您的快速編輯隊友。靜態變量的工作。我承認我沒有讀過你的鏈接,可能直到我完成這個項目纔會做。當我使用你的第一個代碼時,我有一些類型錯誤,但現在它都很好。感謝您的快速回復:) – hazdog

+0

這似乎是您的Ship類,在您的構造函數(Ship()函數)代碼中的錯誤。確保您正在使用的所有對象都已初始化。如果您需要幫助,請告訴我一些代碼,但我的建議是儘量讓事情變得簡單:除了速度變化之外,對所有內容都做出評論,並確保您可以從時間軸上訪問它。之後,逐個取消構造函數中的行,直到找到給你帶來麻煩的東西。 – danii

+0

我應該在構造函數中啓動我的變量嗎?我只是把它們放入船類(公共類船舶擴展精靈等),但在我的構造函數類之前,在他們自己的小標題下面。 – hazdog

0

Ship類中:

public function get speed():int{ 
    return 2 + Math.ceil(Math.random() * 4); 
} 

,並在時間軸上:

import Ship; 
var ship:Ship = new Ship(); 
trace(ship.speed); 
+0

感謝您的回答:) – hazdog

+0

歡迎:)像這樣的getters真的很有用 – www0z0k