Java 如何使用像素阵列从精灵表中获取精灵?
我想使用RGB值的像素数组(在Java 如何使用像素阵列从精灵表中获取精灵?,java,image,sprite,Java,Image,Sprite,我想使用RGB值的像素数组(在.render()方法中)从精灵工作表中获取精灵。像素阵列应该保存整个图像的RGB值,以便以后从图像中获取单个精灵。有人能确切地解释一下我是怎么做到的吗?我刚得到一张黑色的照片 代码: } 更新(1): -能够通过更改spriteSheet=ImageIO.read(getClass().getResourceAsStream(“/res/marioScriteSheet.png”))来读取文件“marioScriteSheet.png” 到spriteSheet=
.render()
方法中)从精灵工作表中获取精灵。像素阵列应该保存整个图像的RGB值,以便以后从图像中获取单个精灵。有人能确切地解释一下我是怎么做到的吗?我刚得到一张黑色的照片
代码:
}
更新(1):
-能够通过更改spriteSheet=ImageIO.read(getClass().getResourceAsStream(“/res/marioScriteSheet.png”))来读取文件“marioScriteSheet.png”代码>
到spriteSheet=ImageIO.read(getClass().getResourceAsStream(“/MarioSpriteSheet.png”)代码>
(image res文件夹已在类路径中
新问题:
Exception in thread "main" java.lang.ClassCastException: java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
at SpritePractice.render(SpritePractice.java:115)
at SpritePractice.run(SpritePractice.java:75)
at SpritePractice.start(SpritePractice.java:125)
at SpritePractice.main(SpritePractice.java:133)
该代码在这里抛出异常,然后将其忽略
catch (Exception e) {
..
致:
您可能应该从您在sprite工作表中读取的try/catch中打印堆栈跟踪。您可能会遇到问题…无论何时出现try/catch
块,您都应该始终打印堆栈跟踪-这将对您有很大帮助。问题在于路径。图像位于res文件夹中。获取它的最快方法是什么?ImageIO.read(getClass().getResourceAsStream(“/res/marioScriteSheet.png”);
Hmm..现在它给我的是IllegalArgumentException:input==null(同一行)哪个Jar包含MarioSpriteSheet.png
?执行Jar-tvf the.Jar
,并将输出复制/粘贴为一个文件。@andrewker这意味着该文件不存在。请确保该文件的名称拼写正确,否则可能会意外发生拼写错误。
catch (Exception e) {
..
catch (Exception e) {
e.printStackTrace(); // very informative!
..