【问题标题】:preloadJS sometimes doesn't trigger any eventpreloadJS 有时不会触发任何事件
【发布时间】:2016-01-04 13:31:05
【问题描述】:

所以我用 HTML5 制作了一些游戏,它们一个接一个地玩,使用带有 preloadJS 库的 loadgame 函数,游戏每 5 分钟更改一次。 gameID 是要加载的新游戏的文件名。发生的情况是,如果互联网非常慢,则不会触发任何事件并且永远不会加载下一个游戏。

loadgame = function() 
{
    canvas = document.getElementById("canvas");
    stage = new createjs.Stage(canvas);

    loader = new createjs.LoadQueue(false);
    loader.loadFile({src:gameID+".js", type:"javascript"}, true);   
    loader.addEventListener("complete", prehandleComplete);
    loader.addEventListener("error", handleLoadError1);
    loader.addEventListener("fileerror", handleLoadError1);
}

【问题讨论】:

  • 我在使用 Microsoft Edge 时收到此错误:XMLHttpRequest: Network Error 0x2ef3, 由于错误 00002ef3 无法完成操作。

标签: javascript html canvas createjs preloadjs


【解决方案1】:

发生这种情况是因为加载文件超时并且由于某种原因它没有触发事件。

loader.loadFile({src:gameID+".js", type:"javascript", loadTimeout:"60000"}, true);  

【讨论】:

    【解决方案2】:

    我对错误进行了快速搜索,found some results 表明数据的 mimetype 或字符集中可能存在导致错误的内容。

    类似于我上面链接的帖子中示例的解决方案,您可以将自定义 Content-Type 标头附加到任何加载项:

    loader.loadFile({
        src:gameID+".js", 
        headers:{"Content-Type" : "application/json; charset=utf-8"}
    });  
    

    请注意,您不需要此加载项中的“类型”属性(扩展程序将为您确定),也不需要传递 true 作为第二个参数,因为这是默认值。

    【讨论】:

    • 谢谢,XMLHttpRequest 的问题是由于超时导致文件根本没有加载。
    • 不确定您的评论是什么意思。错误信息表明它需要设置内容类型。如果您收到 PreloadJS 当前无法检测到的错误,则文件将超时,但不应导致 00002ef3 错误。
    • 我认为是因为它没有加载给出内容类型的文件。至少该错误不会再出现,因为我将超时更改为 1 分钟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多