2012-12-14 2 views
2

4 개의 이미지를 화면에 무작위로 렌더링하는 간단한 게임을 만들려고하지만 HTML로 웹 사이트에 올려 놓고 싶습니다. 이클립스에서 테스트 할 때 제대로 작동하지만 HTML로 변환하여 웹 사이트에 업로드하면 액세스 거부 ("java.io.FilePermission" "Sheet.png" "read")가 발생합니다. getResourceAsStream ("Sheet.png");애플릿에 이미지로드 HTML

하지만 작동하지 않습니다. 도움주세요!

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Random; 
import javax.imageio.ImageIO; 

public class Game extends Canvas implements Runnable{ 

public BufferedImage icons = null; 
public BufferedImage wall = null; 
public Random r = new Random(); 
public boolean running; 
private InputStream input; 

public Game(){ 

    setBackground(Color.white); 
    setSize(640, 320); 

    input = Game.class.getResourceAsStream("Sheet.png"); 

    start(); 
    this.setSize(new Dimension(640, 320)); 

    try { 
     icons = ImageIO.read(input); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 

    wall = icons.getSubimage(0, 0, 16, 16); 
} 

public static void main(String args[]){ 
    new Apple().init(); 
} 

public void start(){ 
    running = true; 
    new Thread(this).start(); 
} 
public void stop(){ 
    running = false; 
} 

public void run() { 
    while(running){ 
     try { 
      new Thread().sleep(200); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     repaint(); 
    } 
} 
    int rendered; 
public void paint(Graphics g){ 
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null); 
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null); 
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null); 
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null); 
    rendered++; 
    g.drawString("Rendered: "+rendered, 0, 290); 
} 
} 

애플릿 클래스 :

import java.awt.Color; 
import java.awt.Dimension; 
import javax.swing.JApplet; 

public class Apple extends JApplet{ 

public void init(){ 
    this.start(); 
    this.setBackground(Color.WHITE); 
    this.setEnabled(true); 
    this.setMinimumSize(new Dimension(640, 320)); 
    this.setMaximumSize(new Dimension(640, 320)); 
    this.setSize(new Dimension(640, 320)); 
    this.add(new Game()); 
} 

} 

HTML :

<html><body> 
<p> 
<applet code="Apple.class" archive="Applet.jar" 
width="640" height="320"></applet> 
</p> 
</body></html> 
+0

1) * "html로두고 웹 사이트에 업로드 할 때"* 애플릿을 방문 할 수있는 URL은 무엇입니까? 2)'width = "640"height = "320"'HTML에서는 좋지만 크기 설정에 대한 다른 모든 참조는 제거합니다. 이것은 불필요하며 도움이되지 않습니다. 3)'init()'메소드 내에서'start()'를 호출하지 마십시오. 이러한 메소드는 JVM에서만 호출해야합니다. 4) 스윙과 AWT 구성 요소를 합당한 이유없이 혼합하지 마십시오.이 경우,'Canvas'를'JPanel'로 대체하십시오. 5)'System.out.println (e.getMessage());'를'e.printStackTrace()'로 대체하십시오. 6)'g.drawImage (wall, .. nextInt (280), this); ' –

+0

모두 바뀌 었습니다. 당신은 나에게 말했지만 여전히 같은 오류를 알려주지 만 이클립스에서는 잘 동작한다. URL은 다음과 같습니다. http://dl.dropbox.com/u/53271378/Applet/untitled%20text.html – marshby

답변

1

내가 당신을 위해 몇 가지 '나쁜 소식'을 가지고있다. 애플릿은 여기에서 잘 작동합니다.

Working applet

이것은 당신이 볼 수있는 문제는 오래된 클래스 캐시의 결과임을 시사한다. 페이지를 다시로드하기 전에 Java Console이 열려 있고 캐시가 비워져 있는지 확인하십시오.

+0

와우 대단히 감사합니다. 더 많은 문제가 발생하면 "나쁜 소식"이 있기를 바랍니다. 감사합니다.) – marshby

관련 문제