StarlingManual:自动屏幕翻转
来自Starling中文站
现代智能手机和平板电脑的一个非常赞的功能就是, 他们能够识别设备的方向, 并对用户界面做出相应的调整.
要在 Starling 中检测方向变化,你首先需要更新 App 的 AIR 配置文件。确定包含以下设置:
<!-- 初始方向 ("portrait" or "landscape"). 可选 --> <aspectRatio>portrait</aspectRatio> <!-- 是否允许自动改变方向。 可选,默认 false --> <autoOrients>true</autoOrients>
设置好后,你便可以在 Starling stage 中监听 “RESIZE” 事件了。当方向被改变时事件被触发,在相应的事件处理函数中设置 Starling viewPort 和 stage 的尺寸。
stage.addEventListener(Event.RESIZE, onResize); /** 该事件处理句柄将在屏幕旋转时被调用。 */ private function onResize(event:ResizeEvent):void { updateDimensions(event.width, event.height); updatePositions(event.width, event.height); } /** 依据当前屏幕尺寸更新 stage 和 viewPort 的尺寸 */ private function updateDimensions(width:int, height:int):void { var scale:Number = Starling.current.contentScaleFactor; var viewPort:Rectangle = new Rectangle(0, 0, width, height); Starling.current.viewPort = viewPort; stage.stageWidth = viewPort.width / scale; stage.stageHeight = viewPort.height / scale; } /** 这是最复杂的部分: 更新你的用户界面以适应新的屏幕方向。 */ private function updatePositions(width:int, height:int):void { // 更新游戏中所有对象的位置。 }
最困难的部分是: 更新你的用户界面以适应新的屏幕方向。尽管这么做并不是对所有游戏都有意义,但只要有可能还是建议将其实现,因为这对玩家来说真的很方便,同时这个功能也无形中增强了你的竞争力!
翻译: 于洋(Seven)