Ho una classe Image e un'altra ImageStore. L'immagine è solo un oggetto valore contenente il nome del pacchetto e il nome dell'immagine. ImageStore esegue tutto il lavoro effettivo: calcola il percorso reale dell'immagine (in base al pacchetto e al nome dell'immagine) e lo carica dal server.
Ora ho una gerarchia di nodi abbastanza grande (e profonda) (questo è un motore di rendering per un gioco) quindi ad esempio ora sono in un gruppo e voglio inserire una nuova immagine. Lo faccio:
var image = new Image("packageName", "imageName");
In questo momento l'immagine non ha ancora alcuna dimensione, in quanto non desidero codificare le dimensioni dell'immagine (in questo caso questa può essere una tessera, che non è sempre 64 * 32 per esempio) nella mia vista di gioco.
- quando l'immagine viene aggiunta al gruppo (suppongo che il gruppo sia già collegato al renderer) , il gruppo verrà invalidato
- il Renderer richiederà un nuovo rendering di frame.
- analizzerà l'albero gerarchico del nodo e quando troverà l'immagine che ho aggiunto prima
- richiederà ImageStore (o TileImageStore, questo non solo memorizza la larghezza e l'altezza ma anche il punto centrale inferiore della tessera, solo quando il centro inferiore della tessera non corrisponde al centro in basso punto dell'immagine reale.) per ImageData;
- ImageStore ora carica il pacchetto, che ha anche le informazioni sulla larghezza e l'altezza;
- applicherà la nuova larghezza e altezza all'immagine e imposterà un flag come caricato.
Mi piacerebbe avere in qualche modo ImageStore staccato dal rendering. Per poter utilizzare solo Image e ImageStore senza la necessità del renderer.
Modifica Voglio farlo perché mi piacerebbe conoscere la dimensione di un'immagine anche quando l'immagine non è renderizzata. Per ottenere l'immagine bisogna chiedere a ImageStore le dimensioni, l'ancora e imageData. I pacchetti sono come questi:
package = {image01: {base64: "very very long string", width: 10, height: 20, anchorX: 1, anchorY: 10}}
Solo dopo che ImageStore carica questo grande file è in grado di conoscere la larghezza / altezza dell'immagine;