Vanha otsikko: ”Miks FileInputStream ei toimi? JAVA”
Yritän ladata textuureja näin:
TextureLoader.getTexture(ext, new FileInputStream(new File("./resources/textures/" + fileName))).getTextureID;
ja tässä koko metodi:
public static Texture loadTexture(String fileName) { String[] splitArray = fileName.split("\\."); String ext = splitArray[splitArray.length - 1]; try { TextureLoader.getTexture(ext, new FileInputStream(new File("./resources/textures/" + fileName))).getTextureID; } catch(Exception e) { e.printStackTrace(); System.exit(1); } return null; }
mut se ei vaan toimi. se alleviivantuu punasella ja siin lukee:
not suitable method found for getTexture(String,FileInputStream) method TextureLoader.getTexture(String) is not applicable (actual and formal argument lists differ in length) not suitable method found for getTexture(String,int,int,int,int) is not applicable (actual and formal argument lists differ in length)
tietääkö kukaan mikä on vikana?
ja käytän siis lwjgl lisäkirjastoa
kiitos avusta :D
Siinähän nyt ihan selvästi lukee, että TextureLoader ei sisällä getTexture-metodia, jonka parametrit olisivat tyypeiltään String ja FileInputStream. (Missään ei sanota, että vika olisi FileInputStreamissa.)
Et edes kertonut nyt, mitä kirjastoa käytät, mutta sattumalta googlaamalla selviää, että jollain Slick-nimisellä jutulla tekstuurin voisi ladata ehkä näin:
Texture texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/image.png"));
Tosin tuossa nyt tulos taitaisi olla sama kuin nykyisessä koodissasi, joten ehkä et käytäkään Slick-kirjastoa tai koodissasi on jotenkin väärä TextureLoader-luokka.
Yleensä on järkevää säilyttää jossain myös itse tekstuuri eikä vain ottaa sen ID:tä, koska jos oliota ei säilytetä, se yleensä vapautetaan automaattisesti ja ID:stä tulee hyödytön.
En javasta niinkään tiedä, mutta ihan perus englannilla tuon virheilmoituksen tulkitsee näin:
Sopivaa versiota metodista getTexture(String,FileInputStream) ei löydy Metodi TextureLoader.getTexture(String) ei ole sopiva (Oikean ja annetun argumenttilistan pituus on eri) Metodi TextureLoader.getTexture(String,int,int,int,int) ei ole sopiva (Oikean ja annetun argumenttilistan pituus on eri)
Annat siis metodille TextureLoader.getTexture
väärän verran/-laisia parametreja. Virheilmoitus sanoo mielestäni, että metodi vaatii listan String
tai String,int,int,int,int
.
En tiedä, mitä kirjastoa käytät, joten heitin vähän mutulla ja kristallipallon avustuksella.
BTW, miksi palautat funktiosta aina null
? Olet määrittänyt palautusarvoksi Texture mutta et palauta tekstuuria.
Edit: Aivan liian hidas
Aihe on jo aika vanha, joten et voi enää vastata siihen.