我在iPhone 4上测试我的starling应用程序,我怀疑这是因为过时的IOS版本而发生的。
package { import flash.events.Event; import flash.events.StageOrientationEvent; import flash.display.Sprite; public class Startup extends Sprite { public function Startup():void { addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onAddedToStage(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener); } private function orientationChangeListener(e:StageOrientationEvent):void { Debug.write("orientation: " + stage.orientation); //Never called } } }
application.xml将autoOrients设置为“true”并将aspectRatio设置为“landscape”,我也尝试按照某些stackoverflow应答中的建议删除aspectRatio,但无济于事。
我的应用程序中永远不会调度StageOrientationEvent.ORIENTATION_CHANGING。
另一个奇怪的事情正在发生,这可能有助于您更好地了解情况:
即使在application.xml中将aspectRatio设置为“landscape”,app也会以纵向模式打开,stage.orientation将返回“rotatingRight”(意为横向)。 我只能通过在application.xml中将aspectRatio设置为“portrait”,然后在运行时手动设置为“landscape”来正确设置横向:
stage.setOrientation(StageOrientation.ROTATED_RIGHT);
答案 0 :(得分:0)
如果您只想锁定横向模式,那么首先在描述XML中将aspectRatio设置为landscape,将autoOrient设置为true,然后在代码中执行:
stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
stage.autoOrients = true;
该设备不会通过肖像。
答案 1 :(得分:0)
<autoOrients>true</autoOrients>
<aspectRatio>landscape</aspectRatio>
应该是同性恋的方式,它一直适用于我们,但我们没有使用此设置发布应用程序与air sdk 18
因为它似乎对你不起作用,你可以尝试使用动态方式作为一种解决方法,就像我们在通用构建中使用一样(在预加载器框架中检测设备iphone / ipad,应用正确的方向,实例化正确的主类) ,在旧设备/ os版本上测试
与
<autoOrients>true</autoOrients>
<aspectRatio>any</aspectRatio>
并尽快调用stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
,意思是在main或preloader类构造函数中