3

我正在尝试使用 Haxe 和 CreateJS (externs) 构建一个应用程序。我遇到了加载清单的问题。

这是代码:

function loadAssets():void
{
    var _manifest:String = "assets/manifests/mymanifest.json";
    _queue = new LoadQueue(true);
    _queue.on("complete", onQueueComplete);
    _queue.on("error", onQueueError);
    _queue.loadManifest([_manifest]);
}

mymanifest.json 的内容:

{
  "path" : "assets/images/main_menu/",
  "manifest" : 
  [
    {"id" : "mm_background", "src" : "background.jpg", "type":"Image"},
    {"id" : "mm_adv_off", "src" : "advanSelectOff.jpg", "type":"Image"},
    {"id" : "mm_adv_on", "src" : "advanSelectOver.jpg", "type":"Image"},
    {"id" : "mm_tech_off", "src" : "techSelectOff.jpg", "type":"Image"},
    {"id" : "mm_tech_on", "src" : "techSelectOver.jpg", "type":"Image"},
    {"id" : "mm_app_off", "src" : "appSelectOff.jpg", "type":"Image"},
    {"id" : "mm_app_on", "src" : "appSelectOver.jpg", "type":"Image"}
  ]
}

我注意到 mymanifest.json 被加载,但是没有图像被加载。

onQueueError不会触发,所以我认为没有错字或格式错误...

我如何验证:
我在浏览器中查看控制台,并查看了网络负载...控制台没有显示错误跟踪或排序。网络不显示任何图像负载...

4

1 回答 1

1

我相当确定您的清单只是作为 JSON 加载,并且没有任何东西可以将其标识为清单。

强制清单类型

由于您将清单添加为包含一项的数组,因此它只是将其解释为纯 JSON 文件(由于扩展名)。要将其标记为清单,您可以包含一个类型以向 PreloadJS 指示 JSON 文件是清单。

例子:

_queue.loadManifest([
    {src: _manifest, type: "manifest"}
]);

或:直接传递清单文件

将清单作为唯一参数传递,而不是包含清单的数组。如果该loadManifest方法接收一个参数,它假定它是:

  1. 加载项数组(这是您的演示正在执行的操作)
  2. 清单对象(基本上是 JSON 的内容,但作为 JavaScript)
  3. 作为清单单个文件路径。

例子:

_queue.loadManifest(_manifest); // No square brackets

这应该告诉 PreloadJS 加载 JSON,解析它,检查manifest结果的属性,然后加载它。

于 2016-09-29T16:01:13.847 回答