我正在创建一个应用程序,如果手机处于横向或纵向状态,它将具有不同的菜单。
我想我必须告诉flash在手机从横向移动到纵向时移动到新框架,反之亦然,但在创建定向事件监听器后我不确定确切的代码。
答案 0 :(得分: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)同样的优化)
答案 1 :(得分:0)
您无需创建新框架。实际上,观看旧菜单滑落可能更具视觉吸引力,而新动画可能更具吸引力(如with TweenLite)。
有关方向更改的文档可以在Adobe的ActionScript APIs specific to mobile AIR applications: "Screen Orientation"和the API找到。