正确防止 Flex Mobile 应用程序中的方向变化

2023-12-14

有谁能够真正让它在 Flex SDK 4.6 中正常工作吗?

这是一个简短的片段:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        addedToStage="onAddedToStage(event)"
        title="Title">
    <fx:Script>
        <![CDATA[  
            private function onAddedToStage(event:Event):void { 
                if (stage.autoOrients) {
                    stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChanging, false, 0, true);
                }
            }

            private function orientationChanging(event:StageOrientationEvent):void {
                if (event.afterOrientation == StageOrientation.DEFAULT || event.afterOrientation == StageOrientation.UPSIDE_DOWN) {
                    event.preventDefault(); 
                }     
            } 
        ]]>
    </fx:Script>
</s:View>

我想要实现的是在两个方向都支持横向模式,因此如果用户将设备旋转 180 度,屏幕也应该旋转。但是,当用户将设备旋转到纵向方向之一时,根本不应该有任何操作。相反,我看到导航器操作栏的宽度发生变化,有时内容处于纵向方向,因此显然阻止该事件是不够的。我正在使用 Adob​​e 建议的“官方”方式,但问题是它运行得不太好。当然,舞台没有改变,但无论如何,导航器中似乎有东西在触发,因为您可以看到操作栏宽度发生变化。

我在处理程序方法中显式地将布局边界设置为固定宽度取得了一些成功 - 这可以防止更改操作栏宽度,但这只是一个临时解决方案 - 如果视图受到转换或其他重绘的影响 - 它将再次呈现错误尺寸。好像下面有东西告诉它它处于纵向模式,尽管我试图阻止它。

在你用“autoOrient = false”之类的愚蠢想法引爆之前,不要这样做。这显然不是这个问题的解决方案。显然这是 Flex SDK 的一个错误 - 有没有人找到修复它的方法或稳定的解决方法?

编辑:显然其他人也遇到了类似的问题:
- http://forums.adobe.com/message/3969531(主要话题是别的,但请阅读神奇机器人的评论)
- http://forums.adobe.com/message/4130972


我不确定这是否是正确的,我最终做错了什么,但经过一番努力,我发现这是一个稳定的解决方案:

private function onAddedToStage(event:Event):void { 
    if (stage.autoOrients) {
        stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChanging);
        stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChanging, false, 100, true);
    }
}      

private function orientationChanging(event:StageOrientationEvent):void {
    event.stopImmediatePropagation();
    if (event.afterOrientation == StageOrientation.DEFAULT || event.afterOrientation == StageOrientation.UPSIDE_DOWN) {
        event.preventDefault(); 
    }   
}  

首先要注意的是,addedToStage 在移动应用程序中会触发几次(2-3 次)。我不知道为什么,显然我的代码中没有 addChild 。也许 AIR 运行时会执行其他操作。因此,为了避免添加不必要的处理程序数量,常用的技术是首先删除处理程序 - 如果此类处理程序尚未注册,它不会执行任何操作,但如果存在,它将删除它,这将维护处理程序计数于 1.

第二件事是事件的优先级 - 它在 0 上不起作用,必须将其设置为较大的值,以便在 AIR 运行时中的内容之前启动。

最后一件事 - event.stopImmediatePropagation() - 现在,我们是第一个处理该事件的人,我们无法阻止该事件在这个特定场景中进一步发送。

这使得方向无法完美工作 - 对我来说,横向和反向横向(rotated_left、rotated_right)正在工作和过渡,而纵向模式根本不影响视图。

现在,这里存在危险 - 您可能希望在离开视图时删除侦听器(在过渡动画结束、视图停用或其他情况下),因为 stopImmediatePropagation 将阻止在应用程序的其他部分处理该事件。

我希望 Adob​​e(实际上是现在的 Apache)能够仔细研究这个问题并追踪我的解决方案。

EDIT

此解决方案还存在最后一个问题,即如果应用程序在设备处于 DEFAULT 或 UPSIDE_DOWN 方向时启动,在这种情况下应用程序将处于纵向模式。

要解决此问题,解决方案是在addedToStage处理程序中更改宽高比:

   if(Stage.supportsOrientationChange) {
         stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确防止 Flex Mobile 应用程序中的方向变化 的相关文章

  • 两者都实现了类。将使用两者之一

    我有一个项目 它具有使用 SocketRocket 的依赖项 通过 CocoaPods 安装 并从 HeapAnalytics 导入了静态库 显然 HeapAnalytics 库已经使用了 SocketRocket 编译时没有出现错误 但在
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • 如何在 ios 7 上更改重新排序控制图像

    我正在寻找一种更改重新排序控件图像和大小的方法 我使用此代码来更改重新排序图像 void tableView UITableView tableView willDisplayCell UITableViewCell cell forRow
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • ViewWillAppear 没有被 UISplitViewController 调用

    背景和目标 我有一个基于 UISplitViewController 的 iPad 应用程序 到目前为止它支持 4 个方向 但现在我想将其锁定为仅横向 我变了shouldAutorotateToInterfaceOrientation左视图
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • 在 ant/nant 中构建 Flex 项目

    我的公司经常遇到 Flex 项目构建中断的问题 出现该问题的主要原因是开发人员在本地计算机上执行的构建与在构建计算机上发生的构建根本不同 开发人员正在使用以下方式构建项目FlexBuilder eclipse并且构建机器正在使用命令行编译器
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • 这个错误是无效上下文0x0吗?

    我在ViewDidLoad中编写了以下代码 Implement viewDidLoad to do additional setup after loading the view typically from a nib void view
  • Swift 3:如何去除UITableView屏幕截图的灰色区域

    我在从桌面视图的屏幕截图中删除灰色区域时遇到了问题 这是我尝试截图时的输出UITableView 实际上我隐藏了一些tableViewCell这是不需要的 可能这就是区域显示灰色的原因 任何帮助表示赞赏 非常感谢 Answer 我通过使用
  • 自动布局、UIDynamics 和动画

    我对自动布局还很陌生 并且对如何为视图设置动画感到困惑 我读了很多 我知道你必须遵守限制 编辑它 然后包装layoutIfNeeded in an UIView动画块 但当真正要做的时候 我却有点失落 我很乐意有人能向我解释如何做这个动画
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法
  • 为什么这个 SKPhysicsJointPin 不能将这 2 个精灵保持在一起?

    我显然不太了解 SKPhysicsJoint 但是除了 Apple 文档之外 网上的信息还很少 下面的代码有什么问题 我认为应该保持头部和颈部永久连接 我的意图是它们就像两张带有大头针的纸 这样它们可以旋转一点 但不仅仅是完全分开 当我运行
  • ResponseSerializer“无法使用 Swift 3 调用非函数类型“NSHTTPURLResponse”的值?

    我一直在使用以下代码 没有出现任何问题 直到更新到 Xcode 8 beta 6 它类似于这个例子 https github com Alamofire Alamofire generic response object serializa

随机推荐

  • 实体框架和自我跟踪实体与 POCO

    如果我想使用实体框架 4 作为我的数据层 并希望将我的实体发送到另一层 无论是通过 WCF 还是其他机制 然后希望能够更新实体并将它们发回以进行更新 删除 插入最好使用自跟踪实体还是 poco 对象 如果可能的话 我宁愿使用 POCO 对象
  • 在 ggplot 中绘制多个时间序列

    我有一个由 10 个变量组成的时间序列数据集 我想创建一个时间序列图 其中每个 10 个变量随着时间的推移以不同的颜色绘制在同一个图表上 值应位于 Y 轴上 日期应位于 X 轴上 点击这里对于数据集 csv 这是我一直在使用的 可能是错误的
  • 如何阅读这个 LESS css?

    我正在尝试找出 Joni Korpi 的 Frameless CSS 无框架网格 http framelessgrid com 并且我很难阅读他拥有的 less 文件 我对 LESS 使用变量有一个基本的了解 所以我知道 column 48
  • 安装 Windows 10 周年更新后无法启动 Android 模拟器

    我刚刚安装了 Windows 10 周年更新 现在无法启动 Android 模拟器 Android Studio 显示以下消息 Android Emulator is incompatible with Hyper V 但如下图所示 Hyp
  • 如何获取大型调查数据集的 svydb R 包以返回标准错误

    很高兴看到 Charco Hui 将 Thomas Lumley 的实验性 sqlsurvey 包复活为 svydb 在 R 中处理大型调查数据集可能是一个很好的工具 不过 在 svydb 计算标准误差时遇到了一些问题 这个问题与我在 sq
  • 尝试找到 4 个点的贝塞尔曲线的长度

    我找到了这个问题的大约 1000 个答案 但没有一个是我可以使用的 因为我在曲线中使用了 4 个控制点 也就是说 我偶然发现了这个人here double BezierArcLength point2d p1 point2d p2 poin
  • 播放案例类的json读取和默认参数?

    我对默认参数和使用 Play Json Read 有问题 这是我的代码 case class Test action String storeResult Option Boolean Some true returndata Option
  • 为 python 函数提供可变数量的参数

    我有一个脚本 它从输入文件中读取可变数量的字段并将它们作为参数传递给函数 例如 文件 1 包含字段 A B 和 C gt function A B C 文件 N 包含字段 A B C 和 D gt function A B C D 我的问题
  • 如何在 django 中使用 @ 提及用户

    我一直在 django 上开发一个项目 它与 instagram 和 twitter 非常相似 它需要具有的功能之一是在文本字段中使用 提及用户 我已经调查了一段时间 关于如何在 django 中做到这一点 除了一些像 django men
  • 如何在 tkinter Entry 小部件中仅插入一些指定的字符

    我有一个包含 n 个 Entry 小部件的列表 用户应该只能键入以下字符 V F 如果用户键入这些字符之一 则焦点应从 Entry x 传递到 Entry x 1 否则焦点应保留在原来的位置 在 Entry x 上 并且应丢弃输入 我无法丢
  • 如何在Java中递归解压文件?

    我有 zip 文件 其中包含一些其他 zip 文件 例如 邮件文件是abc zip它包含xyz zip class1 java class2 java And xyz zip包含文件class3 java and class4 java 所
  • 为第三方 Webflow 重定向 ionic 时要使用什么重定向 URL

    我正在开发一个离子移动应用程序 我想在其中重定向到第三方网络流 该网络流请求用户同意并重定向到回调 URL 我应该指定该回调 URL 以获取令牌作为权限令牌以进行进一步的 API 调用 由于 ionic 本身是一个 html5 移动应用程序
  • 为什么存在NotImplementedException?

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 这真的非常让我感到不安 所以我希望有人能给我一个合理的理由来解释为什么事情是这样的 NotImplementedException
  • Jackson 单参数构造函数因 ParameterNameModule 失败

    我正在使用 Jackson 2 8 5 和 Java 8 的 ParameterNamesModule https github com FasterXML jackson modules java8 当我想使用单个参数对具有单个构造函数的
  • 如何使中心圆居中?

    如何使中心圆居中 仅限 CSS 假设最新的 CSS3 浏览器支持 当父 w h 动态变化时 必须保持 v h 居中 实验性 CSS 盒模型规范在这里有帮助吗 Thanks http jsfiddle net dragontheory VdJ
  • 在 MS *Word* VBA 中循环选择不连续的部分

    我在 MS Word 2013 VBA 中有一个宏 notExcel 切换所选文本的突出显示颜色 代码看起来像 这 If Selection Range HighlightColorIndex WhtColor Then Selection
  • 使用新版本的应用程序更新和更改设置 plist 文件

    我的应用程序的资源文件夹中有一个默认设置 plist 文件 并且在第一次启动时该文件被复制到文档文件夹中 在应用程序的后续版本中 如何将文档中的 plist 设置与自上一版本以来添加的任何新键和值 可能是嵌套的 合并 我见过一种模式 其中属
  • PowerShell New-CommandWrapper :为以下参数提供值

    我的意思是对输出进行着色ls 我检查了Powershell 一劳永逸地正确着色 Get Childitem 输出 这两个选项似乎是 Use New CommandWrapper 正如 OP 和 Jon Z 的回答中所提倡的那样 使用模块PS
  • R 用字典表替换列中的值而不使用合并或连接

    假设我有一个字典表 例如 id value 1 168833 2 367656 3 539218 4 892211 millions of lines 和一个原始数据框 例如 name code Abo 1 Cm3 2 LL2 6 JJ 1
  • 正确防止 Flex Mobile 应用程序中的方向变化

    有谁能够真正让它在 Flex SDK 4 6 中正常工作吗 这是一个简短的片段