1

如果手机是横向或纵向,我正在创建一个具有不同菜单的应用程序。

我想当手机从横向移动到纵向时,我必须告诉 flash 移动到新帧,反之亦然,但我不确定创建方向事件侦听器后的确切代码。

4

2 回答 2

1

有两种方法。听一个StageOrientationEvent或听一个Event.RESIZE。我个人更喜欢使用 RESIZE,因为它的调用频率稍高一些,并且可以使您的界面更加同步。

var landscapeNav:Sprite; // this would be your landscape nav. Obviously does not have to be a Sprite
var portraitNav:Sprite; // same as landscapeNav, but this represents your portrait nav
stage.addEventListener( Event.RESIZE, this.stageResizeHandler );

function stageResizeHandler( e:Event ):void {
    if ( stage ) { //just to make sure the stage is loaded in this class so we avoid null refs
        if ( stage.stageWidth >= stage.stageHeight ) {
            landscapeNav.visible = true;
            portraitNav.visible = false;
        }
        else {
            landscapeNav.visible = false;
            portraitNav.visible = true;
        }
    }
}

这绝对可以清理(landscapeNav.visible = stage.stageWidth > stage.stageHeight),但这应该给你一些继续。如果您想按照 Atriace 的建议制作动画,您可以在函数的条件内执行 TweenLite/Max 调用,而不是将 visible 设置为 true/false(不过,在动画完成后,您应该将 visible 设置为 false优化相同)

于 2013-03-28T16:29:14.403 回答
0

您无需创建新框架。事实上,观看旧菜单滑出,新菜单滑入(就像TweenLite一样)可能更具视觉吸引力。

有关方向更改的文档可以在 @Adobe 的特定于移动 AIR 应用程序的 ActionScript API 中找到:“屏幕方向”API

于 2013-03-28T16:21:13.323 回答