2016-09-28 3 views
3

Ich versuche, eine App mit Haxe und CreateJS (externs) zu bauen. Ich stoße auf ein Problem beim Laden von Manifesten. HierHaxe CreateJS Laden externer Manifest Inhalte schlägt fehl

ist der Code:

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]); 
} 

Inhalt 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"} 
    ] 
} 

Ich bemerke, dass mymanifest.json geladen wird, jedoch keines der Bilder geladen werden.

onQueueError nicht auslösen, so dass ich glaube nicht, dass es ein Tippfehler oder fehlerhafte Fehler ist ...

Wie ich überprüfte:
mich an der Konsole im Browser betrachten, und die Netzlast betrachtet. .. Konsole zeigt keine Fehlerspuren oder die Art. Netzwerk zeigt keine Lasten der Bilder ...

Antwort

1

Ich bin ziemlich sicher, dass Ihr Manifest gerade als JSON geladen wird, und dass es nichts gibt, das es als Manifest identifiziert.

Kraft der manifesten Typ

Da Sie das Manifest als Array mit einem Element hinzufügen, interpretiert es nur als einfache JSON-Datei (aufgrund der Erweiterung). Um es als Manifest zu kennzeichnen, können Sie einen Typ angeben, der PreloadJS angibt, dass es sich bei der JSON-Datei um ein Manifest handelt.

Beispiel:

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

OR: Überschreiten die Manifest-Datei direkt

Pass die manifest als einziges Argument, anstelle eines Arrays das Manifest enthält. Wenn die loadManifest Methode ein Argument erhält, nimmt er es entweder:

  1. Ein Array von Last Artikel (das ist, was Ihre Demo tut)
  2. Ein Manifest Objekt (im Wesentlichen den Inhalt Ihres JSON, sondern als JavaScript)
  3. Ein einzelner Dateipfad, der ist ein Manifest.

Beispiel:

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

Das PreloadJS sagen sollte die JSON zu laden, analysieren sie, überprüfen Sie für eine manifest Eigenschaft des Ergebnisses, und sie laden.

+0

Vielen Dank Lanny für Ihre Hilfe. – MikeH

+0

Ich stimme dir zu, dass ich auch denke, dass die Datei nur als JSON geladen wird ... Ich habe die erste Option versucht (_queue. [OadManifest ([{src: _manifest, typ: "manifest"}], true); wird immer noch als JSON geladen ... Die zweite Option scheint nicht praktikabel, bekomme ich eine Fehlermeldung, dass loadManifest nach einem Parameter des Typs Array sucht MikeH

+0

Verwenden Sie TypeScript oder so? loadManifest hat immer mehr als nur ein Array akzeptiert, daher könnten die Definitionen falsch sein. Beachten Sie, dass das Laden als "Manifest" -Typ die Datei weiterhin als JSON lädt, aber nach dem Laden der Datei nach einer Manifest-Eigenschaft sucht. Wie bestimmen Sie, ob es nur als JSON geladen wird? – Lanny

Verwandte Themen