2

我正在尝试找出在 Adob​​e Air [桌面应用程序,而不是基于 Web 的 flex 应用程序] 中对用户进行身份验证并加载应用程序(同时显示预加载器)的方法。

到目前为止,这是我能够实现的:- 一个窗口询问登录详细信息,一旦验证,我使登录窗口不可见并打开应用程序主窗口的一个实例。这有两个问题:-

  1. 我必须打开一个新窗口(总共 2 个窗口)。如果我能够简单地在一种状态下显示登录表单并在另一种状态下显示主应用程序视图,它会更好看。我也试过了,但问题是除了视图组件之外,flash 确实执行所有动作脚本并保持其他状态就绪。有一些以应用程序视图为中心的动作脚本开始抛出空引用错误等。最重要的是,随着两个视图的创建,整个事情需要一段时间才能显示出来,尽管只显示了其中一个
  2. 一旦用户通过身份验证,我想显示一个预加载器,直到加载主应用程序视图

简而言之,这就是我想要做的: -

  1. 尽可能快地加载登录窗口并停在那里(应用程序其他部分的动作脚本不应运行)
  2. 身份验证后,加载应用程序的主视图。显示预加载器,直到加载完成
  3. 在同一个窗口中加载主视图(而不是打开一个新窗口并使登录不可见)

需要有关如何执行此操作的帮助和指导。

谢谢!

更新 1

好的,所以现在我已经设法将功能整合到一个窗口中。然而,国家之间的过渡并不是一帆风顺的。状态 1 是登录屏幕。如果用户输入正确的登录凭据,视图的状态 2 将变为活动状态。

现在要加载状态 2(它是一堆 UI 组件和一个带有大量数据的网格),它需要时间。在那之前,应用程序会出现空白,然后所有这些都显示在一个混蛋中。过渡可以更顺畅吗?只需显示“正在加载...”就足够了。因为状态 2 直到所有它都被构建好后才会出现,并且一旦我将当前状态更改为状态 2,状态 1 就会消失。有没有办法监控进度并仅在下一个状态发生时才更改状态已加载!

更新 2

好的,我让过渡动画在状态之间工作。但是,转换开关仍然存在问题。问题是我登录验证后切换到的状态有很多组件,并且显示了很多数据。有没有办法可以附加监听器(如果有的话),当状态加载完成并生成视图时我可以触发它!过渡中当前的 jerk like 效果是因为状态已更改但视图尚未完成。

由于状态 2 加载了大约 10000 行数据,因此状态更改为状态 2 并不顺利。 在完全拉出状态 2 并提取所有数据后,有没有办法可以更改用户可见的状态? creationComplete 在这里没有多大帮助。

状态 2 的状态更改并不顺利,因为状态 2 从数据库加载了大约 10000 行数据。在完全拉出状态 2 并提取所有数据之后,有没有办法可以为用户明显地更改状态?creationComplete 在这里没有多大帮助。

简而言之,有没有办法从初始状态开始加载状态并使其仅在完全加载时才可见?即我可以从状态 1 触发事件到加载状态 2,但只有在状态 2 完全加载时才能明显转换到状态 2。

更新 3

经过一周的灭火,发布赏金并通过网络进行清理后,我仍然无法解决此问题!在创建 UI 和加载数据时,我的应用程序窗口变得无响应。在 Windows 中,它甚至会在窗口标题栏显示“未响应”约 5 秒钟。所以它的 UI 卡住了,因为数据需要一些时间来获取和加载——默认情况下,所有这些都发生在一个线程中。

基于 Adob​​e Air 开发的人是如何做到这一点的?在加载实际游戏之前,我通常总是看到加载屏幕 - 当它加载时,它的功能完全正常。一定有办法!

4

1 回答 1

2

在网格中加载 10000 行的耗时问题可能会出现在任何 Web 应用程序中的任何基于 Web 的语言中,因为 Web 应用程序需要在具有自身资源限制的 Web 浏览器环境中运行。

所以我建议你不要在加载视图时加载所有 10000 条记录。而是先加载 1000 条记录,然后保留一个带有“下一步”或“显示更多”标签的链接或按钮,然后单击从数据库中获取下一组 1000 条记录。这样你就可以完成你的任务。

谢谢,

Jigar Oza

于 2013-09-03T11:01:47.193 回答