傍晚,並提前感謝您的智慧。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