2012-05-05 1 views
0

그래서 제가 만든 콘솔 게임이있어서 2 차원으로 만들 생각이에요. 지금까지 모든 것이 좋았습니다. 운동 및 기타 잘 작동합니다. 그리고이 그림이 나올 때까지 그림이 좋았습니다.Java 애플릿 두 번째 드로잉 (검은 색 부분)을 할 때 그래픽 드로잉 문제가 발생했습니다.

내 레이어를 나타내는 클래스를 만들면 재생 가능한지도가 레이어가 될 것이라고 생각했으며 서로 레이어를 그립니다. 빠른 드로잉을 위해 메모리에 저장할 수도 있습니다.

나는 이것이 '좋은'/ '괜찮아요'아이디어라고 생각했다.

을 내가 2 개 레이어 두 번째를 사용할 때 문제가된다 (좋은 생각인지 아닌지 누군가 말해한다면 내가 감사하겠습니다) 레이어는 항상 첫 번째 레이어를 망칩니다. (확신 한 층으로 작동)

for (TileLayer layer : layers) 
     g.drawImage(layer.getImage(), 0, 0, null); 

layer.getImage()가 정확한지 : 내가 '지도'를 그리는 데 사용하는 코드는 다음과 같습니다. 문제는 두 개의 레이어를 그릴 때 두 번째 레이어가 첫 번째 레이어의 모든 것을 검정색으로 그립니다.

BufferedImage img = new BufferedImage(tiles.length * Tile.TILE_SIZE, 
              tiles[0].length*Tile.TILE_SIZE, 
              ColorSpace.TYPE_RGB); 

    for (int x = 0; x < tiles.length; x++) { 
     for (int y = 0; y < tiles[0].length; y++) { 
      //System.out.println("ID:" + tiles[x][y].getId()); 
       img.getGraphics().drawImage(tiles[x][y].getImage(), 
             x * Tile.TILE_SIZE, 
             y * Tile.TILE_SIZE, 
             null); 
     } 
    } 

그것의 난 '페인트'를 오버라이드 (override) 된 자바 애플릿, 난 그 변경 : 는이 같은 레이어 드로우 코드가 있습니다. '공기'를 표현하기 위해 투명한 이미지를 사용해 보았습니다. (아마도 이것이 엉망이 될 것이라고 생각했습니다.) 은 그리면 안되는 상황을 추가하려고 시도했습니다.

나는 잘못된 방식으로 작동하는 것을 만들었을 수도 있습니다. 이렇게하는 적절한 방법에 대한 도움은 좋을 것입니다. (또는 내가 잘못 생각할 수있는 곳을 말해주십시오)

답변

1

이 예제에서는 잘못된 상수를 BufferedImage 형식으로 사용하고있는 것처럼 보입니다.

BufferedImage에서 투명성을 허용하려면 BufferedImage.TYPE_INT_ARGB (또는 마지막 비트에 "A"가있는 BufferedImage의 유형 상수 중 하나)로 마지막 매개 변수를 설정하십시오.

+0

문제였습니다. 정말 고마워요. – Zentdayn

관련 문제