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)

个人工具
名字空间

变换
操作
导航
Starling中文资料
Starling原创教程
论坛
友链
工具箱