我的 Flash 网站经常在刷新之前不会呈现

发布于 2024-08-29 04:29:28 字数 256 浏览 6 评论 0原文

http://randomdorm.com

我们的客户端与 Rails 后端通信以获取登录详细信息,然后登录到 Adob​​e LCCS 服务器。我们一直在巡航,但昨天中午左右我们开发了一个错误,导致 swf 在刷新页面之前无法呈现。在后续刷新时,它会立即弹出。即使我禁用了与 Rails 服务器签入的代码,问题仍然发生。

刷新如何带来改变?

http://randomdorm.com

Our client communicates with a Rails backend to get login details and then logs into an Adobe LCCS server. We have been cruising right along but around noon yesterday we developed a bug that causes the swf to not render until you refresh the page. On subsequent refreshes it pops up right away. The problem happened even when I disabled the code that checks in with the Rails server.

How could refreshing make a difference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2024-09-05 04:29:28

听起来您的用户访问您的页面,swf 在完全下载之前就开始播放,并且在到达最后加载的帧后停止并且不再继续播放 即使 swf 已加载完毕。

当用户刷新时,swf 已被缓存,并且他们会加载之前应该看到的版本。

解决此问题的一个简单方法是在第一帧上放置 stop() 操作,然后向主阶段的 loaderInfo 添加一个 Event.PROGRESS 监听器代码>对象。当事件 bytesLoaded 与您的 bytesTotal 匹配时,您的 swf 已完全加载,您可以在此时 play() 您的 swf(或 gotoAndPlay()

示例发生在项目的第一帧

function loadProgressHandler(event:Event):void {
    if(event.bytesLoaded >= event.bytesTotal) {
        event.target.removeEventListener(Event.PROGRESS, this.loadProgressHandler);
        play();
    }
}

this.stop();
this.loaderInfo.addEventListener(Event.PROGRESS, this.loadProgressHandler);

It sounds like your users visit your page and the swf starts playing before it's fully downloaded and stops once it hits the last loaded frame and doesn't continue to play even when the swf is done loading.

When the user refreshes, the swf has been cached and they load the version they should have been seeing before.

An easy way to fix this is to put a stop() action on the first frame and then add a Event.PROGRESS listener to the main stage's loaderInfo object. When the events bytesLoaded match your bytesTotal then your swf is fully loaded and you can play() your swf at that point (or gotoAndPlay().

Example takes place on the first frame of your project:

function loadProgressHandler(event:Event):void {
    if(event.bytesLoaded >= event.bytesTotal) {
        event.target.removeEventListener(Event.PROGRESS, this.loadProgressHandler);
        play();
    }
}

this.stop();
this.loaderInfo.addEventListener(Event.PROGRESS, this.loadProgressHandler);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文