나는 이것을 일찍 게시했지만, stackoverflow 표준과 동등하지 않았다. 코드를 정리하고 내 질문에 대해 좀 더 자세히 설명 했으니 여기에 간다.중첩 클래스의 내부 클래스 내부에서 객체를 만들고 사용하는 방법은 무엇입니까?
CS1 프로젝트의 애플릿에서 두 개의 소행성 게임을 만들고있다. 특정 시간에 호출 할 수있는 메서드를 사용하여 사운드 효과를 구현하는 방법을 파악하려고합니다. 이 튜토리얼 (http://www.dreamincode.net/forums/topic/14083-incredibly-easy-way-to-play-sounds/)을 사용하여이를 발견했지만 중첩 루프 구문에 약간의 문제가 있습니다.
다른 클래스 (예 : AsteroidsGame.java)의 Sound 클래스에 'Sound'개체를 어떻게 구성합니까?
자습서 코드가 복잡하기 때문에 여기서는 가독성을 높이기 위해 제 작업을 진행합니다.
//Import Statements
import java.applet.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
public class Audioapp extends JApplet
{
public class Sound // Holds one audio file
{
private AudioClip song; // Sound player
private URL songPath; // Sound path
Sound(String filename)
{
try
{
songPath = new URL(getCodeBase(),filename); // Get the Sound URL
song = Applet.newAudioClip(songPath); // Load the Sound
}
catch(Exception e){} // Satisfy the catch
}
//Loops audio file
public void playSound()
{
song.loop();
}
//Stops audio file
public void stopSound()
{
song.stop();
}
//Plays audio file once
public void playSoundOnce()
{
song.play();
}
} //Closes Sound()
public void init()
{
Sound testsong = new Sound("song.mid");
testsong.playSound();
}
} //Closes Audioapp()
편집 1 : 마지막 스레드에서 그냥 기억 누군가가 내가 그것을 실행/컴파일 할 때이 무엇을 게시 제안했다. 이 .java는 자체적으로 아무것도하지 않습니다. 하지만 그것은 내 프로젝트의 나머지 부분과 함께 배치 될 때 실제로 오류없이 컴파일됩니다.
편집 2 : Zim-Zam에게 많은 도움을 주셔서 감사합니다. 누군가이 스레드를 찾고 동일한 문제가있는 경우 그의 의견을 참고하십시오.
'캐치 (예외 전자)의 인스턴스 내부 클래스는 정적이 아닌 경우에, 당신이 사용하는 것이
Audioapp.Sound sound = audioApp.new Sound()
Audioapp.Sound sound = new Audioapp.Sound()
는 {}'좋은 방법이 아닙니다. –
* "CS1 프로젝트 애플릿"* [CS 교사가 애플릿 교시를 중단해야하는 이유는 무엇입니까?] (http://programmers.stackexchange.com/questions/196499/why-should-cs-teachers-stop-teaching-applets)를 참조하십시오.) –
* "마지막 스레드의 누군가 .."* 그 문제에 대해서는 나중에 질문을 편집하여 삭제하고 새 메시지를 시작하십시오. 조언을 제공하는 사람들은 일반적으로 스스로를 반복해야하는 것을 좋아하지 않습니다. –