Легким решением было бы добавить статическое свойство в класс документа, который для этого примера называется MyApp.as.Вы присваиваете значение свойству globalStage, устанавливая его в достойный момент времени, который в большинстве случаев в классе документа может быть конструктором:
public class MyApp extends Sprite {
public static var globalStage:Stage;
//...
public function MyApp() {
globalStage = stage;
}
}
После этого вы можете получить доступ к сцене из любого места,импортируя класс документа и вызывая этот фрагмент:
MyApp.globalStage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
Теперь это не должно быть свойством класса документа, возможно, выделенный класс, такой как StageProxy
, будет более понятным, и вы можетеназначить его из класса документа.
public function MyApp() {
StageProxy.stage = stage;
}
И получить к нему доступ из любого места:
StageProxy.stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
Это все равно не то, что я бы назвал «чистым» или «красивым», ноон выполняет свою работу.