Ok, so I figured out how to do this. A few things you need to know.
- Though Starling feels like a black box/walled garden, you do get a reference to your rootClass in the latest version via
Starling.current.root
You can create your starling instance just about anywhere if you have a reference to stage. So your mediator can look something like
override public function onRegister():void { starlingInstance = new Starling(StarlingContainer, stageReference); starlingInstance.addEventListener(starling.events.Event.ROOT_CREATED, onStarlingRootCreated); starlingInstance.viewPort = new Rectangle(x, y, width, height); starlingInstance.start(); } private function onStarlingRootCreated(event:starling.events.Event):void { viewComponent = Starling.current.root as StarlingContainer; }
The important part is waiting for the
Event.ROOT_CREATED
event before setting the viewComponent to your Starling rootClass.- You can get access to the starging stage3d context using
Starling.current.stage
or acccess to the nativeStage usingStarling.current.nativeStage
This is useful for listening to events outside of the StarlingContainer context.
Once you have set up your mediator in this way, you can treat your starling viewComponent just like any other viewComponent, send notifications etc.
Many thanks to the Starling forums.