Вы пометили этот метод как static
. Это означает, что он принадлежит самому классу , а не экземплярам этого класса.
Чтобы вызвать метод как определено, вы должны сказать:
class_Object.spawn()
Однако, это может быть не то, что предназначено, но трудно сказать, не видя реализации. Удаление ключевого слова static
из его определения присоединит его к экземпляру и будет доступно, как вы описали.
См. здесь для документации 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.
Когда вы «расширяете» другой класс, вы «заимствуете» функциональность у другого класса и добавляете / заменяете свою собственную функциональность. Но до тех пор, пока у вас есть экземпляр, если это «публичный» метод, он будет доступен извне, откуда бы этот экземпляр ни был доступен. Я не знаю, поможет ли это ответить на ваш комментарий.