如果手机是横向或纵向,我正在创建一个具有不同菜单的应用程序。
我想当手机从横向移动到纵向时,我必须告诉 flash 移动到新帧,反之亦然,但我不确定创建方向事件侦听器后的确切代码。
如果手机是横向或纵向,我正在创建一个具有不同菜单的应用程序。
我想当手机从横向移动到纵向时,我必须告诉 flash 移动到新帧,反之亦然,但我不确定创建方向事件侦听器后的确切代码。
有两种方法。听一个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优化相同)
您无需创建新框架。事实上,观看旧菜单滑出,新菜单滑入(就像TweenLite一样)可能更具视觉吸引力。
有关方向更改的文档可以在 @Adobe 的特定于移动 AIR 应用程序的 ActionScript API 中找到:“屏幕方向”和API。