자바 애플릿에서 사운드와 이미지를 사용하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
질문 1 : 사운드 및 이미지 파일을 가장 쉽게로드 할 수 있도록 프로젝트를 어떻게 구성해야합니까? 지금은 폴더가 있습니다.
C:\java\pacman
하위 디렉토리와 함께
C:\java\pacman\src
모든 코드를 포함하고 있습니다
C:\java\pacman\assets
이미지와 .wav 파일을 포함합니다. 이것이 최고의 구조입니까, 아니면 자산을 다른 곳에 넣어야합니까?
Question 2:
전체 경로를 사용하지 않고 이미지/사운드를 참조하는 가장 좋은 방법은 무엇입니까? C:\java\pacman\assets\something.png
그들에게? 내가 사용하는 경우 getCodeBase()
함수는 참조하는 것 같습니다 C:\java\pacman\bin
대신에 C:\java\pacman\
.
나는 항아리에서 애플릿을 컴파일 할 때 와이클립스를 통해 애플릿을 테스트 할 때 지금 당장 애플릿을 컴파일 할 때 자동으로 작동하는 기능/클래스를 사용하고 싶습니다.
질문 3 : 이미지/사운드를 어떻게로드해야합니까? 이것이 제가 지금 사용하고있는 것입니다.
1) 일반 이미지 :
import java.awt.Image;
public Image getImg(String file)
{
//imgDir in this case is a hardcoded string containing
//"C:\\java\\pacman\\assets\\"
file=imgDir + file;
return new ImageIcon(file).getImage();
}
이 기능에서 반환 된 이미지는 drawImage
방법의 방법 Graphics
수업 paint
애플릿의 방법.
2) 스프라이트 시트에서 서브 이미지 및로드 스프라이트를 얻는 데 사용되는 버퍼링 이미지의 경우 :
public BufferedImage getSheet() throws IOException
{
return ImageIO.read(new File(img.getPath("pacman-sprites.png")));
}
나중:
public void loadSprites()
{
BufferedImage sheet;
try
{
sheet=getSheet();
redGhost.setNormalImg(sheet.getSubimage(0, 60, 20, 20));
redGhost.setUpImg(sheet.getSubimage(0, 60, 20, 20));
redGhost.setDownImg(sheet.getSubimage(30, 60, 20, 20));
redGhost.setLeftImg(sheet.getSubimage(30, 60, 20, 20));
redGhost.setRightImg(sheet.getSubimage(60, 60, 20, 20));
}
catch (IOException e)
{
System.out.println("Couldnt open file!");
System.out.println(e.getLocalizedMessage());
}
}
3) 사운드 파일의 경우 :
import sun.audio.*;
import java.io.*;
public synchronized void play() {
try {
InputStream in = new FileInputStream(filename);
AudioStream as = new AudioStream(in);
AudioPlayer.player.start(as);
} catch (IOException e) {
e.printStackTrace();
}
}
해결책
클래스 경로에 놓고 (.class 파일로 배치) 클래스 로더.
자바:
package mypackage;
public class MyClass {
public static void main(String[] args) {
java.net.URL url = MyClass.class.getResource("/mypackage/image.gif");
System.out.println(url);
}
}
콘솔 출력 :
C:\resource>dir /b /s
C:\resource\bin
C:\resource\src
C:\resource\bin\mypackage
C:\resource\bin\mypackage\image.gif
C:\resource\bin\mypackage\MyClass.class
C:\resource\src\mypackage
C:\resource\src\mypackage\MyClass.java
C:\resource>java -cp bin mypackage.MyClass
file:/C:/resource/bin/mypackage/image.gif
제휴하지 않습니다 StackOverflow