我正在尝试使用 Haxe 和 CreateJS(外部)构建应用程序。 我在加载 list 时遇到问题。
代码如下:
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
没有触发,所以我不认为有拼写错误或格式错误...
我是如何验证的:
我在浏览器中查看控制台,查看网络负载...
控制台没有显示错误痕迹或排序。网络不显示任何图像负载...
最佳答案
我相当确定您的 list 只是作为 JSON 加载,并且没有任何东西可以将其标识为 list 。
强制 list 类型
由于您将 list 添加为包含一项的数组,它只是将其解释为普通 JSON 文件(由于扩展名)。要将其标记为 list ,您可以包含一个类型以向 PreloadJS 指示 JSON 文件是 list 。
示例:
_queue.loadManifest([
{src: _manifest, type: "manifest"}
]);
或者:直接传递 list 文件
将 list 作为唯一参数传递,而不是包含 list 的数组。如果 loadManifest
方法接收到一个参数,它假定它是:
- 一组加载项(这就是您的演示所做的)
- list 对象(基本上是 JSON 的内容,但作为 JavaScript)
- 是 list 的单个文件路径。
例子:
_queue.loadManifest(_manifest); // No square brackets
这应该告诉 PreloadJS 加载 JSON,解析它,检查结果的 manifest
属性,然后加载它。
关于Haxe CreateJS 加载外部 list 内容失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756277/