public virtual void dispose() { stop(); mNativeStage.removeEventListener(AsEvent.ENTER_FRAME, onEnterFrame, false); mNativeStage.removeEventListener(AsKeyboardEvent.KEY_DOWN, onKey, false); mNativeStage.removeEventListener(AsKeyboardEvent.KEY_UP, onKey, false); mNativeStage.removeEventListener(AsEvent.RESIZE, onResize, false); mNativeStage.removeChild(mNativeOverlay); mStage3D.removeEventListener(AsEvent.CONTEXT3D_CREATE, onContextCreated, false); mStage3D.removeEventListener(AsErrorEvent.ERROR, onStage3DError, false); AsArray __touchEventTypes_ = getTouchEventTypes(); if (__touchEventTypes_ != null) { foreach (String touchEventType in __touchEventTypes_) { mNativeStage.removeEventListener(touchEventType, onTouch, false); } } AsDictionary __programs_ = mPrograms; if (__programs_ != null) { foreach (AsProgram3D program in __programs_) { program.dispose(); } } if (mStage != null) { mStage.dispose(); } if (mSupport != null) { mSupport.dispose(); } if (mTouchProcessor != null) { mTouchProcessor.dispose(); } if (mContext != null && !mShareContext) { mContext.dispose(); } if (sCurrent == this) { sCurrent = null; } }