import com.stevensacks.utils.ObservableClass; import com.stevensacks.galapagos.pages.PageModel; import mx.utils.Delegate; class com.stevensacks.galapagos.pages.Page extends OberservableClass { private var page:MovieClip; private var model:PageModel; private var progressInterval:Number; function Page(pm:PageModel) { super(); model = pm; page = model.clip; } public function transitionIn():Void { if (page.transitionIn) { page.transitionIn(); } else { page.gotoAndPlay("transitionIn"); } } public function transitionOut():Void { if (page.transitionOut) { page.transitionOut(); } else { page.gotoAndPlay("transitionOut"); } } // called by page private function transitionInComplete():Void { dispatchEvent({type:"transitionInComplete"}); } private function transitionOutComplete():Void { dispatchEvent({type:"transitionOutComplete"}); } // inject functions and properties into page clip private function inject():Void { page.transitionInComplete = Delegate.create(this, transitionInComplete); page.transitionOutComplete = Delegate.create(this, transitionOutComplete); page.assets = model.assets; page.props = model.props; } }