Код AS3:
private function init(e:flash.events.Event = null):void
{
if (e != null) removeEventListener(flash.events.Event.ADDED_TO_STAGE, init);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(flash.events.Event.RESIZE, onResizeHandler);
}
private function onResizeHandler(e:flash.events.Event):void
{
if (stage.stageWidth == stage.fullScreenWidth && stage.stageHeight == stage.fullScreenHeight)
{
_logger.log("Main: onResizeHandler complete");
stage.removeEventListener(flash.events.Event.RESIZE, onResizeHandler);
initStarlingAndContext();
}
}
private function initStarlingAndContext():void
{
var iOS:Boolean = SystemUtil.platform == "IOS";
var stageArea:Rectangle = new Rectangle(0, 0, StarlingRoot.STAGE_WIDTH, StarlingRoot.STAGE_HEIGHT);
var fullScreenArea:Rectangle = new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight);
var viewPort:Rectangle = RectangleUtil.fit(stageArea, fullScreenArea, ScaleMode.SHOW_ALL);
_scaleFactor = calculateScaleFactor(viewPort.width);
Starling.multitouchEnabled = true;
Starling.handleLostContext = true;
RenderTexture.optimizePersistentBuffers = iOS;
_starling = new Starling(StarlingRoot, stage, viewPort, null);
_assetManager = new AssetManager(_scaleFactor);
_context = new ApplicationContext(this, _starling, _assetManager, _logger);
_starling.antiAliasing = 1;
_starling.stage.stageWidth = StarlingRoot.STAGE_WIDTH;
_starling.stage.stageHeight = StarlingRoot.STAGE_HEIGHT;
_starling.enableErrorChecking = Capabilities.isDebugger;
_starling.showStats = true;
_starling.addEventListener(starling.events.Event.ROOT_CREATED, starlingRootCreatedHandler);
_starling.addEventListener(starling.events.Event.CONTEXT3D_CREATE, starlingContext3dCreateHandler);
_starling.addEventListener(starling.events.Event.FATAL_ERROR, starlingFatalErrorHandler);
_starling.simulateMultitouch = true;
_starling.start();
}
private function starlingRootCreatedHandler(e:starling.events.Event):void
{
_logger.log("Main: Starling root created");
_rootCreated = true;
initApplication();
}
private function starlingContext3dCreateHandler(e:starling.events.Event):void
{
_logger.log("Main: Starling Context3d created");
_contextCreated = true;
initApplication();
}
private function initApplication():void
{
if (_rootCreated && _contextCreated)
{
if (!_initApplication)
{
_initApplication = true;
_logger.log("Main: init application, scaleFactor: " + _scaleFactor);
var root:StarlingRoot = _starling.root as StarlingRoot;
root.initApplication(_scaleFactor);
} else
{
_logger.error("Main: init application already");
}
}
}
private function starlingFatalErrorHandler(e:starling.events.Event):void
{
_logger.fatal("Starling Fatal Error: " + JSON.stringify(e.data));
}
Лог два раза выводит
Main: Starling Context3d created. Возникает при публикации приложения, когда телефон заблокирован. После снятия с блока, в некоторых случаях вылетает этот баг. И вся сцена как будто сдвигается в сторону. Устройство Android, запускаю с IDEA.