晚上好,提前感谢您的智慧。
如果我表现出无知,请容忍我,但这是我的项目目前的构建方式:
-TitleScreen:出现的第一类。扩展雪碧。-Startup:我用来调用其他类的类。扩展雪碧。-GameScreen:“游戏引擎”类。扩展 AssetsHandler。-AssetsHandler:大多数操作资产的方法所在。扩展 GrfAssetsStore。-GrfAssetsStore:存储所有图形资产的地方。扩展雪碧。-Level01:一级班。扩展游戏屏幕。
现在:当我启动一切时,一切都是笨拙的。所以,假设我完成了第 1 关,我想重新开始,或者转到标题屏幕:再次没有问题,但是我重新实例化了 GameScreen 类 - 然后是 AssetsHandler,然后是 GrfAssetsStore。请注意,我没有设置任何事件监听器来调用它们——事实上,我试图确保一旦启动,它们就不会受到干扰——但在我的无知中,我现在意识到重新启动 Level01 反过来又会重新扩展其他类。
可以理解,这是非常不可取的,但到目前为止我无法克服它。我尝试在 Level01 中实例化超类 - 相同的问题。
目标几乎是让 GameScreen、AssetsHandler 和 GrfAssetsStore 在引擎盖下运行,可以这么说,在开始和结束新关卡的同时,又不重新启动超类,只是从它们那里获取方法/变量等。
那么:我该如何克服呢?不,我在 AS3 方面的经验并不丰富,所以如果这对实际专家来说是显而易见的,我很感激,因此我在这里。
如果我需要更好的措辞,请不要犹豫。
编辑:我认为现在的问题不是扩展,而是我没有正确取消引用变量等,感谢 Josh 帮助我实现了这一点。正如您所提到的,否认 OOP 的主要方面之一是没有意义的:因此,我不应该考虑应用这种不正确的逻辑。
在我正确删除所有引用之前,我将尝试更好的 GC(并在必要时强制 GC)。如果这不起作用......我会发布另一个更详细的问题。