1

闪存预加载器发出FlexEvent.INIT_PROGRESS事件以指示闪存应用程序初始化的进度。但是,调度此事件的次数取决于应用程序本身。

我试图确定这个数字,但在 Flex 文档中找不到答案,所以现在我求助于实验。更糟糕的是,在我看来,这个数字会不时变化,即使闪存文件未修改。

有没有一种程序化的方式来至少估计这个值?

编辑:我正在使用此信息在预加载器中显示进度条。实际上,我显示了两个,一个在下载程序时显示,另一个在初始化时显示。

4

4 回答 4

1

该类mx.preloaders.DownloadProgressBar使用看似任意的值 12:

private var _initProgressTotal:uint = 12;

// [...]

protected function initProgressHandler(event:Event):void
{
    // [...]

    var loaded:Number = 100 * _initProgressCount /
    (_initProgressTotal - _displayStartCount);

    // [...]
}

我不知道他们从哪里得到这个价值,但它似乎对 Adob​​e 来说足够好......?

于 2010-01-24T23:58:45.637 回答
1

不要太担心总数,根据我的经验,这应该发生得如此之快,以至于没有必要完全准确。如果您进行了几次测试,发现它最多计数到 14,那么只需手动将进度条设置为最多 20 个。用户仍然会看到进度条很快填满,因为它不会在屏幕上显示很长时间, 没有人关心它是否完全准确。

于 2009-07-18T00:37:55.230 回答
0

也许每次初始化组件时都会触发该事件?

如果您告诉我们您到底想做什么,也许会有所帮助。我们可以尝试寻找替代解决方案。

于 2009-02-11T11:33:35.703 回答
-1

您应该将进度条基于 bytesLoaded / bytesTotal,而不是调用处理程序的次数。

例如:

preloader.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onPreloaderProgress);

然后,在您的处理程序中,执行以下操作:

function onPreloaderProgress(e:ProgressEvent):void
{
    progress = e.bytesLoaded / e.bytesTotal;
}
于 2009-02-12T19:19:39.520 回答