alphakanal
New member
Zunächst allen ein gutes neues Jahr! Und hoffenlich sind Kopfschmerzen erträglich, denn.... 
Ich lade mit preloadJS ein JSON-Manifest in meine Seite.
Im Manifest sind mehrere Objekte mit diversen Eigenschaften ( id, name ), die jeweils ein Sub-Manifest laden. Das Sub-Manifest lädt jeweils 3 Bilder
Der dazugehörige EventListener unterscheidet die geladenen Formate: Manifest / Image und legt die Manifest Objekte in ein Array.
Ich möchte in der Funktion handleFileLoad() die geladenen Bilder je nach id einem Objekt in myArray zuweisen, damit ich so drauf zugreifen kann :
myArray.bilder.v1 ( = das geladene ImageObject mit der id: Item-1-v1 )
myArray.bilder.v2 ( = das geladene ImageObject mit der id: Item-1-v2 )
myArray.bilder.v3 ( = das geladene ImageObject mit der id: Item-1-v3 )
Ist bestimmt nicht die eleganteste Methode – aber so wüsste ich zumindest wie ich drauf zugreife wenn nötig.
Frage ist jetzt: wie ich ansetzen soll, damit in der handleFileLoad() :
Wenn überhaupt so möglich...
- - - Aktualisiert - - -
Update:
Schon einmal einen Ansatz für die handleFileLoad() Funktion gefunden:
Damit nicht alle Bedingungen ( l1, l2, l3 etc ) hart codieren müssen - lass ich das generieren und möchte den Wert l1 in die match() Funktion mit der variable prefix ersetzen...da fehlt mir der Synthax 
- - - Aktualisiert - - -
Syntax gefunden:
Ich lade mit preloadJS ein JSON-Manifest in meine Seite.
Code:
var queue = new createjs.LoadQueue(true);
queue.addEventListener("fileload", handleFileLoad); // für jede geladene datei
queue.loadManifest({ src: "assets/json/manifest.json", type: "manifest" }, true);
function handleFileLoad(event) {
switch (event.item.type) { // Je nach geladenem Typ ausführen ->
case createjs.AbstractLoader.MANIFEST:
myArray.push(event.item); // Legt das Manifest Objekt in ein array
break;
[COLOR="#FF0000"] case createjs.AbstractLoader.IMAGE:
// wird als [ object HTML ImageObject ] geliefert und möchte über die id ( z.B : Item-1-v1 ) dem manifestObjekt ( Item-1 ) zuweisen
break;[/COLOR]
}
Im Manifest sind mehrere Objekte mit diversen Eigenschaften ( id, name ), die jeweils ein Sub-Manifest laden. Das Sub-Manifest lädt jeweils 3 Bilder
Code:
Manifest.json:
{
"manifest": [
{"id":"Item-1", "name":"Name", "src": "sub-manifest-1.json", "type":"manifest" },
{"id":"Item-2", "name":"Name", "src": "sub-manifest-2", "type":"manifest" }
]
}
Sub-Manifest:
{
"manifest": [
{ "id": "Item-1-v1", "src": "item-1-v1.png"},
{ "id": "Item-1-v2", "src": "item-1-v2.png"},
{ "id": "Item-1-v3","src": "item-1-v3.png"}
]
}
Der dazugehörige EventListener unterscheidet die geladenen Formate: Manifest / Image und legt die Manifest Objekte in ein Array.
Ich möchte in der Funktion handleFileLoad() die geladenen Bilder je nach id einem Objekt in myArray zuweisen, damit ich so drauf zugreifen kann :
myArray.bilder.v1 ( = das geladene ImageObject mit der id: Item-1-v1 )
myArray.bilder.v2 ( = das geladene ImageObject mit der id: Item-1-v2 )
myArray.bilder.v3 ( = das geladene ImageObject mit der id: Item-1-v3 )
Ist bestimmt nicht die eleganteste Methode – aber so wüsste ich zumindest wie ich drauf zugreife wenn nötig.
Frage ist jetzt: wie ich ansetzen soll, damit in der handleFileLoad() :
- das geladenen Bildobjekt gefiltert wird, je nach dem ob die id -> Item-1* oder Item-2* beinhaltet
- das gefilterte Bildobjekt dann z.B dem Objekt myArray[0] hinzugefügt wird
Wenn überhaupt so möglich...
- - - Aktualisiert - - -
Update:
Schon einmal einen Ansatz für die handleFileLoad() Funktion gefunden:
Code:
case createjs.AbstractLoader.IMAGE:
var checker = manifestArray.length + 1;
var [COLOR="#FF0000"]prefix[/COLOR] = "l" + checker; // prefix sollte in match()
var id = event.item.id;
// finde alle bilder mit "l1" in der id ->
if (id.match(/[COLOR="#FF0000"]l1[/COLOR]/g)){
console.log("L1 id gefunden : " + id);
}
- - - Aktualisiert - - -
Syntax gefunden:
Code:
var id = event.item.id;
var checker = manifestArray.length + 1;
var prefix = "l" + checker;
var re = new RegExp(prefix, 'g');
if (id.match(re)){
console.log("id gefunden : " + id);
}
Zuletzt bearbeitet: