同じ問題があります。私はいくつかの異なるデバイスでテストしました。ロック画面にパスワードが必要な場合、それらのほとんどは実際にクラッシュするか、極端な遅延が発生します。私のソリューションでは、デバイスがスリープ状態になった後に自動方向付けを許可し、デバイスが横向きになると再び無効にします。デバイスが縦向きになっている間は、すべてのコンテンツを非表示にします。参考までに、私はまだこのコードのすべてをテストしていないので、何かが欠けている可能性があります。
//Before the device goes to sleep, enable auto-orientation
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);
function handleDeactivate(e:Event):void
{
stage.autoOrients = true;
//listen for the device to re-activate
e.currentTarget.addEventListener(Event.ACTIVATE, handleActivate, false, 0, true);
}
//Once the device is re-activated, check the orientation.
function handleActivate(e:Event):void
{
e.currentTarget.removeEventListener(Event.ACTIVATE, handleActivate, false, 0, true);
//if the orientation is portait, just listen for an orientation change
if (stage.stageHeight > stage.stageWidth)
{
//It makes sense that you would just use stage.setAspectRatio(StageAspectRatio.LANDSCAPE) here,
//however in my experience I've found that setting the aspect ratio here seems to cause an infinite loop of the device attempting to reset the orientation.
//Instead, I will wait for the user to change orientation, and then lock it in landscape
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);
}
else
{
disableAutoOrientation();
}
}
//Check if the new orientation is landscape. If so, disable orientation changes.
function onOrientationChange():void
{
if (stage.stageWidth > stage.stageHeight)
{
stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChange);
disableAutoOrientation();
}
}
//disable the auto-orientation feature
function disableAutoOrientation():void
{
stage.autoOrients = false;
}