Flex移动方向:强制纵向模式,然后允许自动方向

时间:2013-03-08 14:32:27

标签: flex mobile device-orientation orientation-changes

我正在创建一个flex移动项目,我想在单击按钮时强制应用程序纵向移动,当我单击其他按钮时再次允许更改方向。

当我点击第一个按钮时,这是我的代码,我想强制进行纵向模式:

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;

如果我单击第一个按钮,应用程序处于纵向状态并且不需要更改任何内容,它就可以正常工作。但如果它是在风景上而且必须改为肖像,当我再次允许方向改变时,它就不能正常工作。

您知道我是否必须允许或更改某些内容?或者,有没有更好的方法来做到这一点?

提前致谢

1 个答案:

答案 0 :(得分: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;              
}