您將該方法標記爲static
。這意味着它屬於該類的類本身而不是實例。
要調用方法的定義,你會說:
class_Object.spawn()
然而,這未必是何意,但很難沒有看到實施的話。從其定義中刪除static
關鍵字會將其附加到實例,並且將按照您所描述的方式進行訪問。
請參閱here瞭解有關該主題的Adobe文檔。
爲了回答您的評論,一個簡單的方法來思考它是一個「類」是一個藍圖,共創「實例」。
所以,當你說new class_Object()
你告訴「藍圖」來「構建」一個藍圖的新實例。在藍圖的方面,您可以定義應該可用於實例(或實例方法)的方法/屬性。此外,您還可以定義「藍圖」本身(或靜態方法)可用的方法/屬性。
因此,使用的Car
public class Car {
public function startEngine():void {
// This is an instance method, it will be available to
// any instance of a car, or new Car();
// Note: "this" in this context refers to the current instance of the car
// that the method is being called from
}
public static function compare(Car car1, Car car2):bool {
// This method belongs to the blueprint of a car
// Note: "this" doesn't make any sense in this context, because we
// aren't talking about a particular instance.
}
}
經典的例子再比如說:
var mercedes:Car = new Car();
var bmw:Car = new Car();
mercedes.startEngine(); // call an instance method. notice we call it from a particular instance of a car.
Car.compare(mercedes, bmw); // call an static method. notice we call it from the class of Car.
當你從另一個類「擴展」,你是「借」從另一個類的功能和添加/替換您自己的功能。但只要你有一個實例,如果它是一個「公開」的方法,那麼它將從該實例可用的地方在外部可用。我不知道這是否有助於回答你的評論。
哦,我看到裏面的方法,我沒有意識到靜態attatched它純粹的類,清理,截至感謝。但是,如果我理解正確,他們是兩個獨立的班級,而不是一個班級的班級。所以我有擴展MovieClip的Main類和擴展Sprite的我的Object類。這隻會在Main文件擴展目標文件時起作用?謝謝您的幫助! – Artharos 2012-02-04 21:31:43
@Artharos更新了我的答案,希望能夠覆蓋您的評論。 – 2012-02-05 00:51:51
這絕對有幫助,我現在對課程有了更好的理解,所以謝謝!然而,我像上面那樣啓動並調用了我的對象類的一個實例,並像上面那樣調用了它的一個方法,但它卻拋出了錯誤。我不知道是否重要,我設置變量並從Enter_Frame函數內調用方法,不應該這樣做。哦,如果我嘗試調用一個靜態方法,就像你做的那樣,我得到錯誤:'1061:通過靜態類型的引用調用可能的未定義方法'方法'非常感謝您的耐心! – Artharos 2012-02-05 10:25:20