【问题标题】:ActionScript Preloader More Detailed PercentagesActionScript 预加载器更详细的百分比
【发布时间】:2011-09-05 21:57:26
【问题描述】:

我正在为我正在构建的 Flash 应用程序构建一个预加载器。我正在寻找一种从ProgressEvent.PROGRESS 中获取更详细百分比的方法,所有预加载器都使用它来跟踪下载进度。当我对一个小文件的加载程序百分比运行trace() 语句时,我的输出窗口显示如下内容:

4
8
13
17
23 etc...

我正在寻找一种能够更密切地监控这一进展的方法,所以我得到了1, 2, 3, etc...。如果数字重复,那没关系。我的部分预加载器依赖于这些值,因此,如果能够在 1 到 100 之间获取它们而不会跳过整数,那就太好了。

感谢您的宝贵时间。

【问题讨论】:

  • 您是使用某种打包的预加载器还是手动执行?

标签: php flash actionscript-3 actionscript preloader


【解决方案1】:

您的帧速率有多快?可能是它设置得太低,导致进度刷新频率降低。我会尝试提高你的帧速率或主要电影。

另一种常见的方法是通过在两个间隔之间补间值来模拟它,因此它看起来更平滑。但这听起来不像您想要达到的目标。

【讨论】:

  • 嗯...我会看看那个。唯一的问题可能是它位于外部类中。
  • 谢谢,但是看起来提高帧率(比如 100)没有用。
  • 显示列表与 ProgressEvent 完全没有关系,除非他在 ENTER_FRAME 内进行跟踪,考虑到他首先使用的是 ProgressEvent,情况并非如此。跨度>
【解决方案2】:

这没有意义 - 除非您的互联网连接一次加载恰好 1% 的文件。

发生的情况是,在收到每个新数据包后,它可以是任何大小,具体取决于您的下载速度(假设在 200 到 230kb 之间)。 ProgressEvent.PROGRESS 会在每次收到其中一个时发送,如您预期的那样添加到加载的总百分比。

所以基本上,假设我们正在加载一个 1000kb 文件,而您的下载速度是 100-150kbps

在每次发送ProgressEvent.PROGRESS 时调用的函数中的每个trace() 都将在收到新数据包时运行,因此:

已加载 100kb - 总共 100 个 - 跟踪 10
120kb 已加载 - 总共 220 - 跟踪 22
已加载 150kb - 370 总计 - 痕迹 37

等等

【讨论】:

  • 啊……好细节。看起来我将不得不用一些额外的 ActionScript 来补偿这种细节。谢谢你的帮助,马蒂!
  • 我可以,但它是一个独特的预加载器(不是传统的进度条之一),它位于一个越来越大的 BIG 类中!我知道如何弥补 ActionScript 中的这些差距,所以我想我会这样做。我只是在寻找一种快速的解决方法。不过,感谢您愿意提供帮助!
  • @spryno724 不用担心,尽管拥有“大型”预加载器本身可能是个问题。
  • 只是想指出,如果不发布代码,我们将永远无法 100% 确定问题到底出在哪里。我赞成这个答案,因为 Marty 已经很好地解释了这个功能,所以你至少现在应该能够理解如何修改你的代码以满足你的需要。由于无法具体确定问题,这感觉就像一个未回答的问题。
  • 虽然我同意这一点,但基于他正在加载 something 并通过 ProgressEvent 跟踪加载进度这一事实,我很容易找出问题所在。进步。没有很多方法可以对此进行不同的编码。
【解决方案3】:

您需要这些百分比的具体用途是什么?没有办法强制 URLLoader 每 1% 为您提供一次更新,但您可以伪造它。

如果你想估计你的下载速度,你可以通过 getTimer 获取时间以及每次获取进度事件时从 ProgressEvent 获取的下载量;一旦你有了它,你就可以比较新旧值并获得下载速度的近似值。

你可以做类似的事情来平滑进度条,一旦你有了下载率,你就可以推特你的进度条并在每帧得到一个小的更新,每次你得到一个 ProgressEvent 时都会得到一个更准确的更新。

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多