У вас есть пара проблем. Во-первых: для вызова статического метода вы должны обратиться к классу.
Bus.addBus();
Это позволяет вспышки знать, что вы имеете в виду статический метод шины класса, а не метод, называемый «addBus()» в главном классе.
Во-вторых, в вашем методе Bus.addBus() вы ссылаетесь на нестатические переменные. Это может вызвать проблемы. В частности, вы ссылаетесь на объект сцены, который будет нулевым, поскольку статический этап отсутствует. Вместо этого вам нужно будет либо передать ссылку на сцену, либо вы можете вернуть новую шину из этой функции и позволить вызывающему классу добавить ее в список отображения соответствующим образом.
Я бы порекомендовал второй подход.
В качестве альтернативы, вы можете иметь дополнительные планы для статического метода addBus(). Но я хотел бы отметить, вы могли бы легко выполнить ту самую функциональность с помощью конструктора, как так:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Stage;
public class Bus extends Sprite
{
public function Bus(stageReference:Stage)
{
this.x = stageReference.stageWidth/2;
this.y = stageReference.stageHeight/2;
stageReference.addChild(bus); // This is kind of bad form. Better to let the parent do the adding.
}
}
}
========================= ============================
Правки в ответ на комментарий
в ActionScript, статические методы являются исключением, а не правило. Таким образом, чтобы создать шину, вы измените свой код следующим образом. Комментарии объясняют код.
package
{
import Bus;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Stage;
public class Main extends Sprite
{
public function Main()
{
// Add a new member variable to the Main class.
var bus:Bus = new Bus();
// we can call methods of our Bus object.
// This imaginary method would tell the bus to drive for 100 pixels.
bus.drive(100);
// We would add the bus to the display list here
this.addChild(bus);
// Assuming we have access to the stage we position the bus at the center.
if(stage != null){
bus.x = stage.stageWidth/2;
bus.y = stage.stageHeight/2;
}
}
}
}
Так вы создаете экземпляр своего класса и получаете доступ к нему без каких-либо статических методов.«Новое» ключевое слово эффективно является ярлыком для вызова метода конструктора класса и возвращает новый экземпляр класса. Родитель, который вызывает «новый», имеет этот экземпляр в качестве дочернего элемента и имеет доступ к вызову всех своих общедоступных методов и свойств.
Вы пропустили Bus.addBus(), tut tut – Ryan