createjs loadManifest,应该在清单中加载文件,对吗?

时间:2019-02-15 04:43:15

标签: createjs

如果我正确理解了文档……

window.queue = new createjs.LoadQueue(true, null, true);
queue.loadManifest({src: manifest, type: "manifest"}, true);

应该加载位于json文件中的文件,对吗?在检查器中看不到任何请求,仅在控制台中获取结果数组。我必须遍历结果数组并手动执行loadFile吗?

JSON的格式正确{src:“”,id:“”,类型:“ createjs.Types.IMAGE”}结构。

感谢您的帮助。

添加更多代码:

传递清单网址的功能

function loadImages(manifest) {
    window.queue = new createjs.LoadQueue(true, null, true);

    queue.loadManifest({src: manifest, type: "manifest"}, true);

    queue.on("fileload", this.handleFileLoaded);

    queue.on("progress", function(event) {
        console.log("progress " + event.progress);
    });

    queue.on("fileprogress", function(event) {
        console.log("file progress " + event.progress);
    });

    queue.on("error", function(event) {
        console.log("file error");
    });

    queue.on("complete", function(event) {
        console.log("queue complete");
        console.log(event);
    });

    queue.load();

    return queue;
}

handleFileLoaded事件目前只是将事件转储到控制台。

包含两个示例的清单

{
    "path":"https://images.unsplash.com/",
    "type":"manifest",
    "manifest": [
        {
            "src":"photo-1542838454-d4dce2a7cfde?fit=crop&w=500&q=60",
            "id":"stair_boy",
            "type":"createjs.Types.IMAGE"
        },
        {
            "src":"photo-1549948558-1c6406684186?fit=crop&w=500&q=60",
            "id":"night_bridge",
            "type":"createjs.Types.IMAGE"
        }
]}

我可以在fileload事件中访问清单数组,我可以从那里手动加载图像,但这似乎与使用PreloadJS的整个思路背道而驰。就像在页面加载中一样,预加载应加载清单,识别“类型”……通过文件循环,并且在网络检查器中,我应该看到图像的Web请求。

2 个答案:

答案 0 :(得分:0)

来自docs

loadManifest调用支持四种类型的清单:

  1. 一个字符串路径,它指向清单文件,该清单文件是一个包含“清单”属性的JSON文件,该清单文件定义要加载的文件列表,并且可以选择包含一个“路径”属性,该属性将作为前缀到列表中的每个文件。
  2. 定义“ src”的对象,它是JSON或JSONP文件。可以为JSONP文件定义“回调”。 JSON / JSONP文件应包含“清单”属性,该属性定义要加载的文件列表,还可以选择包含“路径”属性,该属性将附加到列表中的每个文件。
  3. 包含“清单”属性的对象,该属性定义了要加载的文件的列表,并且可以选择包含“路径”属性,该属性将附加到列表中的每个文件之前。
  4. 要加载的文件数组。

您的示例使用第一种方法。如果有任何问题,请随时发布更多代码。

您总是可以在队列中抛出更多事件以查看正在发生的情况,例如“ fileststart”,“ fileload”和“ error”。当第一个清单开始加载时,您应该至少遇到一个事件。

干杯。

答案 1 :(得分:0)

清单中的类型不正确。您正在传递字符串值“ createjs.Types.IMAGE”。这不等于“图像”,也不等于JavaScript createjs.Types.IMAGE,因为它被解释为字符串。

代替使用字符串值“ image”

{
    "path":"https://images.unsplash.com/",
    "type":"manifest",
    "manifest": [
        {
            "src":"photo-1542838454-d4dce2a7cfde?fit=crop&w=500&q=60",
            "id":"stair_boy",
            "type":"image"
        },
        {
            "src":"photo-1549948558-1c6406684186?fit=crop&w=500&q=60",
            "id":"night_bridge",
            "type":"image"
        }
]}

编辑:仅在没有可识别的图像扩展名(例如这种情况)时才需要type属性。