傍晚,并提前感谢您的智慧。AS3:避免同一类别的多个实例
熊与我,如果我表现出的无知,但这里是我的项目是如何建成目前:
-TitleScreen:这似乎是一流的。扩展Sprite。 -Startup:我用来调用其他类的类。扩展Sprite。游戏画面:“游戏引擎”类。扩展AssetsHandler。 -AssetsHandler:其中大多数操作资产的方法都是。扩展GrfAssetsStore。 -GrfAssetsStore:其中存储所有图形资产。扩展Sprite。 -Level01:一级课程。扩展GameScreen。
现在:当我开始一切时,一切都是h d。所以,假设我完成了第一级,并且我想重新启动,或者转到标题屏幕:再次没有问题,但是我重新实例化了GameScreen类,接着是AssetsHandler,接着是GrfAssetsStore。请注意,我没有设置任何将其称为回复的EventListener,我试图确保一旦启动,它们将不受干扰 - 但在我的无知中,我现在已经意识到重新启动Level01会再次延长其他类。
可以理解,这是非常不可取的,但到目前为止我无法克服它。我尝试在Level01中实例化超类,它同样存在问题。
目标很大程度上是在引擎盖下运行GameScreen,AssetsHandler和GrfAssetsStore,可以这么说,新层次开始和结束时,但又没有重新启动超类,只是从中获取方法/变量等。
所以:我该如何克服这个问题?不,我在AS3方面经验不足,所以我很感谢这对于实际的专家是显而易见的,因此我为什么在这里。
如果我需要更好地说一些话,请不要犹豫,说这样的话。
编辑:现在的问题我相信不是扩展,但我没有正确地引用变量等,谢谢乔希帮助我实现这样的。正如你所提到的,否认OOP的一个主要方面是没有意义的:因此我应该考虑不应用那种不正确的逻辑。
我会尝试更好地GC(并强制GC,如果有必要),直到我已正确删除所有引用。如果这不起作用,但我会发布另一个更详细的问题。
为什么要重新实现level01一个问题?为什么这是不可取的? –
重新启动Level01不是问题,因为在重新启动之前我已经从它删除所有的孩子:prob是扩展类被重新调用,复制所有这些类变量,儿童,监听器等,并导致不一致和内存负担 – ReaperOscuro