如何在Flex移动应用中为某些视图启用屏幕方向更改?

3
我在我的移动应用程序(适用于ios和android)中有一些视图,其方向通过设置xml文件中的<aspectRatio>portrait</aspectRatio><autoOrients>false</autoOrients>固定为PORTRAIT
现在我添加了另一个视图,它可以播放来自Youtube的视频,并且应该能够在LANDSCAPEPORTRAIT方向下播放视频。所以我看到了这个问题,它提供了一种仅限制一个方向(全局所有视图)的解决方案,但是如何仅为一个视图重新启用方向更改呢?
注意:我使用Flash Builder 4.6和actionscript 3以及youtube api 任何帮助都将不胜感激 :)
1个回答

2
从XML中删除<aspectRatio>portrait</aspectRatio><autoOrients>false</autoOrients>,因为它会为整个应用程序进行概括。
对于每个视图都要单独执行此操作。由于第一个视图需要以纵向方式显示,请像这样执行。(摘自Adobe文档)
stage.addEventListener( StageOrientationEvent.ORIENTATION_CHANGING, onOrientationChanging ); 

function onOrientationChanging( event:StageOrientationEvent ):void {
    // If the stage is about to move to an orientation we don't support, lets prevent it
    // from changing to that stage orientation.
    if(event.afterOrientation == StageOrientation.ROTATED_LEFT || event.afterOrientation==StageOrientation.ROTATED_RIGHT ) 
    {
        event.preventDefault();
    }
}

对于第二种视图,不要定义任何阶段方向侦听器,因为您需要同时考虑PORTRAITLANDSCAPE

谢谢您的回复。由于有很多视图,所以我想问是否有一种方法可以全局地为所有视图限制它并仅启用一个视图?因为我不想在所有应该受到限制的视图中添加代码。 - AabinGunz
为什么不在单独的AS中定义它,并调用任何你想要的视图呢?因为XML部分将全局化你放在那里的内容。 - Shankar Narayana Damodaran
我正在寻找一种方法,可以在不需要添加任何代码到应该受方向限制的视图(因为我有很多视图)的情况下,仅向视频播放视图添加代码以启用方向。如果不可能,我将不得不采用这个解决方案 :) - AabinGunz
我猜没有什么转机,但是如果你真的很认真地想要解决方案,我建议你在这个问题上开启悬赏,这样一些专家就会找到出路。 - Shankar Narayana Damodaran
有什么想法可以在屏幕方向更改时重置yt播放器大小吗?使用this.stage.stageWidthFlexGlobals.topLevelApplication.widththis.stage.width或其他任何方法? - AabinGunz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接