【问题标题】:Flash - how to start playing an SWF film being loaded before it is complete?Flash - 如何在加载完成之前开始播放正在加载的 SWF 电影?
【发布时间】:2023-03-30 01:43:01
【问题描述】:

我有一个大型 SWF 闪存文件正在由父 SWF 加载,我想开始播放正在加载的影片,比如说,当它完成 50% 时。根据我预期的用户带宽和我的电影的大小,我将计算出执行此操作的最佳时间(电影可能是 20%、30% 或 50% 加载)。我想让用户等待最少,我不需要等到我的闪存达到 100%。

好的,话虽如此,这就是问题所在。我在 ActionScript 3 中。我有一部影片正在加载另一部影片,我想预测加载的影片开始。我有一个 onProgressHandler(mProgress:ProgressEvent) 函数(监听器由 ProgressEvent.PROGRESS 启动),我有一个常规 onLoadComplete(e:Event) 函数(监听器由 Event.COMPLETE 启动)。我可以在常规的 onProgressHandler 期间检查 20% 的完成情况。但是,当我确定到了这一点时,我怎么能期待电影的上映呢?我的意思是,我的 Event.COMPLETE 处理程序传递了 e:Event,我可以使用 e.target 将加载的对象放入我的电影中。但是,如果我想在该过程完成之前开始该过程会发生什么?我无法通过此 e:Event,因为尚未启动 COMPLETE 处理程序...

要说一件很重要的事情。正在加载的胶卷几乎是空的。它很轻。沉重的胶片是正在加载的胶片,我想在完成加载之前将正在加载的胶片附加到我的胶片中的影片剪辑中。这可能吗?

我希望我已经说清楚了。如果我没有,我会尝试进一步解释。

我们将不胜感激任何帮助。非常感谢。

【问题讨论】:

    标签: flash actionscript-3 event-handling flash-cs3


    【解决方案1】:

    progressEvent 有一个 bytesLoaded 属性,您可以使用它来决定何时开始您的电影。 通过知道总字节数和加载的字节数,您所要做的就是设置一个时间间隔来确定用户的实际下载速度。获得所有这些信息后,您就可以确定用户是否下载了足够的内容来开始播放电影。

    查看 adobe 网站了解有关 ProgressEvent 的更多信息:http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/events/ProgressEvent.html

    escapetheory.com.au

    【讨论】:

    • 好的,我明白了,我正在或多或少地这样做。我的疑问是:如何在到达 Event.COMPLETE 之前调用与 Event.COMPLETE 相同的东西?我需要保存已加载影片的 e:Event 以执行以下操作: var loaderInfo:LoaderInfo = e.target as LoaderInfo; var loaded_swf = e.target.content;加载的_swf.x = 50;已加载_swf.y = 50; mc_control.addChild(loaded_swf);
    • @Marcos Buarque。 Loader 是一个 DisplayObject。您已经参考了它;如果您不将加载程序存储为时间线或类变量,以便您可以从事件处理程序访问它。因此,您可以 addChild 它而不是内容。您也可以更改它的x, y, width` 等。在大多数情况下,它与更改内容本身相同,只是您不必等到加载完成。
    • 您的函数正在解析事件类型参数(针对完整事件),但实际上您可以接受任何事件。我认为 ProgressEvent 是从 Event 扩展而来的,所以你的函数可以是:onProgressEvent(event:Event):void{ if(enoughLoaded){ onComplete(event); } }
    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多