如何使用AIR移动设备在Android上正确控制舞台方向?

如何使用AIR移动设备在Android上正确控制舞台方向?,第1张

概述我有一个AIR应用程序,我希望锁定横向方向.我从不希望应用程序旋转到纵向模式.似乎Adobe解决这个问题的方法是配置我的* -app.xml文件,如下所示: <!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default 我有一个AIR应用程序,我希望锁定横向方向.我从不希望应用程序旋转到纵向模式.似乎Adobe解决这个问题的方法是配置我的* -app.xml文件,如下所示:

<!-- 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上正确控制舞台方向?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1128677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存