我正在创建一个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;
如果我单击第一个按钮,应用程序处于纵向状态并且不需要更改任何内容,它就可以正常工作。但如果它是在风景上而且必须改为肖像,当我再次允许方向改变时,它就不能正常工作。
您知道我是否必须允许或更改某些内容?或者,有没有更好的方法来做到这一点?
提前致谢
答案 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;
}