我正在尝试使用Haxe和CreateJS(外部)构建应用程序。 我遇到了加载清单的问题。
以下是代码:
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
没有触发,因此我认为没有错字或格式错误...
我如何核实:
我在浏览器中查看控制台,并查看网络负载...
控制台显示没有错误跟踪或排序。网络没有显示图像的任何负载......
答案 0 :(得分:1)
我很确定你的清单只是作为JSON加载,并且没有任何东西可以将它标识为清单。
强制清单类型
由于您将清单添加为具有一个项目的数组,因此它只是将其解释为普通的JSON文件(由于扩展名)。要将其标记为清单,您可以包含一个类型,以向PreloadJS指示JSON文件是清单。
示例:
_queue.loadManifest([
{src: _manifest, type: "manifest"}
]);
或:直接传递清单文件
将清单作为唯一参数传递,而不是包含清单的Array。如果loadManifest
方法收到一个参数,则假定它是:
示例:
_queue.loadManifest(_manifest); // No square brackets
这应该告诉PreloadJS加载JSON,解析它,检查结果的manifest
属性,并加载它。