Всем добрый вечер, и заранее спасибо за вашу мудрость.
Потерпите меня, если я покажу невежество, но вот как мой проект в настоящее время построен:
-TitleScreen: первый класс, который появляется. Расширяет спрайт. -Startup: класс, который я использую для вызова других классов. Расширяет спрайт. -GameScreen: класс "движка игры". Расширяет AssetsHandler. -AssetsHandler: где находится большинство методов управления активами. Расширяет GrfAssetsStore. -GrfAssetsStore: где хранятся все графические ресурсы. Расширяет спрайт. -Level01: класс первого уровня. Расширяет GameScreen.
Теперь: когда я запускаю все, все отлично. Итак, допустим, я заканчиваю уровень 1, и я хочу перезапустить, или перейти к титульному экрану: снова никаких проблем, НО я повторно создаю экземпляр класса GameScreen - и в свою очередь AssetsHandler, а в свою очередь GrfAssetsStore. Имейте в виду, что я не настраивал никаких EventListeners, которые вызывают их обратно - действительно, я пытался убедиться, что после запуска они останутся нетронутыми, но по моему невежеству я теперь понял, что перезапуск Level01, в свою очередь, повторно расширяется другие классы.
Понятно, что это очень нежелательно, но пока не могу побороть. Я попытался просто создать экземпляр суперклассов в Level01 - та же проблема.
Цель в значительной степени состоит в том, чтобы GameScreen, AssetsHandler и GrfAssetsStore работали под капотом, так сказать, в то время как новые уровни начинаются и заканчиваются, но, в свою очередь, без перезапуска суперклассов, просто получая от них методы/переменные и т.д.
Итак: как мне преодолеть это? И нет, я не очень разбираюсь в AS3, поэтому я признателен, если это очевидно для настоящих экспертов, поэтому я здесь.
Если мне нужно сказать что-нибудь получше, пожалуйста, не стесняйтесь сказать это.
РЕДАКТИРОВАТЬ: теперь проблема, как мне кажется, не в расширении, а в том, что я неправильно разыменовываю переменные и т. д., спасибо Джошу за то, что он помог мне понять это. Как вы упомянули, нет смысла отрицать один из основных аспектов ООП: поэтому я определенно не должен рассматривать возможность применения этой неправильной логики.
Я попытаюсь улучшить GC (и принудительно GC, если это необходимо), пока не удалю правильно все ссылки. Если это не сработает... Я отправлю другой, более подробный вопрос.