Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69

    [JAVA]Image caricate su hashtable non vanno!

    Salve.

    ho questo strano problema.
    Ho realizzato una classe statica che gestisce le texture del mio gioco. In pratica quando la istanzio non fa altro che andare a cercare in un file di configuraz i path delle texture disponibili. Poi per ognunga crea una BufferedImage apposita e la memorizza in una hashtable. Così ho pensato che in pratica mi tengo in memoria sempre l'immagine direttamente utilizzabile evitando quindi di ricaricarla da disco ogni volta che devo disegnarla...sbaglio?
    Ora tutto sembra funzionare perchè al momento di usare una texture la richiedo alla hashtable con la chiave giusta e me la ritorna esattamente...solo che 9 volte su 10 non la disegna!! E' come se perdesse 'immagine!!
    Inoltre se prima di richiedere la texture alla hashtable ricarico di nuovo le texture da disco e le ritrasformo di nuovo in BufferedImage da rimettere ancora nella hashtable...allora tutto funziona!! Proprio come se perdesse l'immagine!
    Qualche idea?

    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69
    dunque ho fatto un ulteriore passo.

    Prima caricavo da disco le texture e le trasformavo in BufferedImage da inserire nella hashtable. Ora per provare, invece di metterci le texture ci metto dei semplici rettangoli disegnati con g.fillRect e trsformati comunque in BufferedImage così il discorso non cambia. Bene, questo funziona, cioè quando richiedo la texture dalla hashtable mi ritorna giustamente un rettagolo colorato. Dunque sbaglio nel caricare l'immagine da disco? io faccio:

    Toolkit kit = Toolkit.getDefaultToolkit();
    Image srcImg = kit.getImage("path della texture su disco");
    BufferedImage dstImg = new BufferedImage(...);
    Graphics g = dstImg.getGraphics();
    g.drawImage(srcImg,...);
    myHashtable.put("chiave",dstImg);

    In pratica carico una Image da disco (la texture). Poi creo una BufferedImage della dimensione desiderata e ne ricavo la graphics. Su tale graphics disegno appunto al texture caricata da disco così dovrei averla disponibile sulla BufferedImage...sbaglio? Beh, alla fine ovviamente memorizzo la BufferedImage su una hashtable.

    Nella prova che dicevo sopra ho sostituito semplicemente

    g.drawImage(srcImg,...);

    con

    g.fillRect(...)

    e tutto funziona!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.