<!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default is the natural orIEntation of the device --><aspectRatio>landscape</aspectRatio><!-- Whether the app will begin auto-orIEnting on launch. Optional. Mobile only. Default false --><autoOrIEnts>false</autoOrIEnts>
这大部分时间都有效 – 但并非总是如此.例如,在某些风格的AndroID(例如:2.x,在Nook平板电脑上运行)如果我的设备的屏幕在Flash Builder打包和部署我的APK时关闭,应用程序开始处于半破坏状态,其宽高比是景观,但一切都是用肖像尺寸来衡量的.在其他设备上,例如我的谷歌Nexus(AndroID 4.1),应用程序正确启动(在横向模式下),但如果我关闭屏幕,将设备旋转到纵向模式,然后重新打开屏幕 – 我的AIR应用程序已隐形再次旋转到纵向模式.更糟糕的是,没有StageOrIEntationEvent.ORIENTATION_CHANGE事件甚至被调度以指示这已发生.
我尝试了上述方法的一种变体,即以编程方式设置设备方向:
private function onAddedToStage( event:Event ):voID { stage.autoOrIEnts = false; stage.setorIEntation( StageOrIEntation.ROTATED_RIGHT );}
该方法具有上述相同的问题.
我也尝试过方法mentioned in this other Stack Overflow thread.我没有禁用自动定位,而是尝试收听StageOrIEntationEvent.ORIENTATION_CHANGE并阻止设备进入纵向模式:
private function onAddedToStage( event:Event ):voID { stage.addEventListener( StageOrIEntationEvent.ORIENTATION_CHANGE,onStageOrIEntationChange,true,int.MAX_VALUE );}private function onStageOrIEntationChange( event:StageOrIEntationEvent ):voID { switch( event.afterOrIEntation ) { case StageOrIEntation.DEFAulT: case StageOrIEntation.UPSIDE_DOWN: case StageOrIEntation.UNKNowN: event.preventDefault(); break; case StageOrIEntation.ROTATED_RIGHT: case StageOrIEntation.ROTATED_left: break; }}
这也似乎只在某些时候起作用.在许多情况下,event.preventDefault()无效,应用程序仍会旋转.
所以…我向其他AIR开发人员提出的问题是:有没有人知道将设备可靠地锁定到单一方向的方法?
解决方法 这是我发现在AndroID 2.3(Fire和Nook)以及4.1(Nexus 7)上为我工作的方法.我还没有测试过更多的设备,但到目前为止看起来很有希望.首先,我将-app.xml配置设置如下:
<aspectRatio>landscape</aspectRatio><autoOrIEnts>false</autoOrIEnts>
然后我将以下代码添加到我的spark应用程序中:
private function onAddedToStage():voID { stage.addEventListener( Event.RESIZE,onStageResize ); NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE,onNativeApplicationActivate );}private function onStageResize( event:Event ):voID { checkForOrIEntationChange();}private function onNativeApplicationActivate( event:Event ):voID { checkForOrIEntationChange();}private function checkForOrIEntationChange():voID { if ( height > wIDth ) { if ( stage ) { stage.setorIEntation( StageOrIEntation.ROTATED_RIGHT ); } else { // The first ACTIVATE event occurs before the Application has been added to the stage callLater( checkForOrIEntationChange ); } }}总结
以上是内存溢出为你收集整理的如何使用AIR移动设备在Android上正确控制舞台方向?全部内容,希望文章能够帮你解决如何使用AIR移动设备在Android上正确控制舞台方向?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)