У меня есть класс, называемый Screen:Вызов переопределение функции подкласса от базового класса в AS3
public class Screen extends GameObject
{
//GameObject is a class extending Sprite and implemented by just some variables and methods
public static var scrStage:Stage;
public function Screen(argStage:Stage) {
scrStage = argStage;
initObjects();
}
private function initObjects():void {
// empty method
}
}
и класс под названием экране воспроизведения:
public class PlayScreen extends Screen
{
//declares TextFields and GameObjects
public function PlayScreen(argStage:Stage) {
super(argStage);
//addChild those TextFields and GameObjects
}
private function initObjects():void {
// initializes those TextFields and GameObjects
}
}
}
Когда строится конструктор PlayScreen, Вызывается экранный конструктор. Внутри него scrStage присвоен argStage, initObjects() называется. экране воспроизведения (подкласс) 's initObjects() должен быть вызван, но Screen (базовый класс)' s initObjects() вызывается вместо.
Не могли бы вы помочь мне вызвать initObjects() при создании конструктора PlayScreen? Заранее спасибо.
UPDATE
К сожалению. После отладки где-то еще в моем проекте, я нашел решение этой:
//edit in Screen class
private function initObjects():void {}
//to
protected function initObjects():void {}
//or public
//and in PlayScreen class
private function initObjects():void {}
//to
protected override function initObjects():void {}
//or public
initObjects() является частным методом и поэтому не наследуется. Нет причин для вызова версии PlayScreen при вызове версии суперкласса. Тот факт, что вам не пришлось переопределять его, должен был дать вам ключ. – BotMaster