0

フレックスモバイルプロジェクトを作成しています。ボタンをクリックするとアプリを強制的に縦向きにし、他のボタンをクリックすると向きを変更できるようにします。

これは、ポートレート モードを強制する最初のボタンをクリックしたときのコードです。

protected function click(event:MouseEvent):void{
   if(stage.orientation != StageOrientation.DEFAULT){
            stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChanged);
            stage.setOrientation(StageOrientation.DEFAULT);
   }else{
            doSomething();
   }

}


private function orientationChanged(event:StageOrientationEvent):void{
            doSomething();
            stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChanged);
}

private function doSomething():void{
            stage.autoOrients = false;
}

問題なく動作し、必要に応じて向きを変更します。

ここで、向きの変更を再度許可したい場合は、次のように入力しただけです。

stage.autoOrients = true;

最初のボタンをクリックしたときにアプリが縦向きで、何も変更する必要がない場合は問題なく動作します。しかし、横向きで縦向きに変更する必要がある場合、向きの変更を再度許可すると、うまく機能しません。

何かを許可または変更する必要があるかどうか知っていますか? または、これを行うより良い方法はありますか?

前もって感謝します

4

1 に答える 1

0

ちょっとしたコツですが、解決しました。

まず、向きを変更する必要がある場合は、古い向きを保存します。向きの変更を許可するボタンを再度クリックすると、最初に古い向きを配置してから、自動向きを許可します。

これは新しいコードの一部です:

private var oldOrientation:String = null;

protected function click(event:MouseEvent):void{
   if(stage.orientation != StageOrientation.DEFAULT){
            oldOrientation = stage.orientation; 
            stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChanged);
            stage.setOrientation(StageOrientation.DEFAULT);
   }else{
            doSomething();
   }

}


private function orientationChanged(event:StageOrientationEvent):void{
            // do something if you are changing to portrait mode (the first change) and other thing if you are changing to old orientation
}

自動方向付けを許可するボタン:

if(oldOrientation != null){

        stage.setOrientation(oldOrientation);
        oldOrientation = null;              
}
于 2013-03-11T17:45:59.487 に答える