2013-01-06 2 views
1

초급 질문입니다. . . GImage 객체에 대해 부울 테스트를 실행하려고하지만 어떻게 작동하는지 모르겠습니다. 예를 들어 내 GImage가 "image1.jpg"파일을 표시하고 있다면 'a'를하고 싶습니다. 그러나 그것이 다른 것을 표시하고 있다면, 나는 'b'하고 싶다. 이미지는 내 프로그램의 다른 부분에서 무작위로 선택됩니다. 이 작업을 수행 할 수있는 유일한 방법은 GImage를 변경할 때마다 수정하는 자리 표시 자 String 변수를 만드는 것입니다. (그리고 나서 자리 표시 자 변수에 대한 테스트를 수행 할 수는 있지만) 내가 원하는 것을 할 수있는 방법. 예를 들어, 다음 작동합니다,하지만 내 실제 프로그램 관련 GImage 개체와 가능한 이미지를 많이 가지고 있기 때문에,이 방법은 매우 다루기 힘든 것 :이있을 수 있습니다 난 그냥 프로그램을 배우고GImage에서 부울 테스트를 실행하는 방법

GImage image1 = new GImage("bar.jpg", 0, 0); 
int var1 = 0; 
GImage image2 = new GImage("sunset.jpg", 100, 0); 
int var2 = 1; 
GImage image3 = new GImage("bar.jpg", 200, 0); 
int var3 = 0; 
if (var1 == 0) { 
    // returns true 
} 
if (var2 == 0) { 
    // returns false 
} 
if (var3 == 0) { 
    // returns true 
} 

, 그래서 확실한 해결책이지만, 나는 그것을 찾을 수없는 것 같다. GImage에 의해 표시된 파일 이름을 반환하는 메서드가 있다면, 그것은 내가 원하는 것을 얻는 것처럼 보일 것입니다. 그러나 그런 메서드를 찾을 수 없습니다. 당신의 도움을 주셔서 감사합니다.

+1

GImage 란 무엇입니까? 해당 API 문서에 대한 링크가 있습니까? –

+0

@JB Nizet [acm.graphics GImage 클래스] (http://jtf.acm.org/javadoc/complete/acm/graphics/GImage.html#getImage()) – Matt

답변

1

적절한 속성이 포함 된 이미지를 자신의 클래스로 래핑 할 수 있습니다.

신속하고 더러운 :

class MyImage 
{ 
    private String resourceName; 
    private GImage gImage; 

    public MyImage(String resourceName,int x, int y){ 
     this.resourceName = resourceName; 
     this.gImage = new GImage(resourceName,x,y) 
    } 

    public String getResourceName() 
    { 
     return resourceName; 
    } 

    //. 
    //. 
    //. 
} 


public static final String RES_IMG_SUNSET = "sunset.jpg"; 

//. 
//. 
//. 

MyImage image1 = new MyImage("bar.jpg", 0, 0); 
MyImage image2 = new MyImage(RES_IMG_SUNSET, 100, 0); 
MyImage image3 = new MyImage("bar.jpg", 200, 0); 

if(image2.getResourceName().equals(RES_IMG_SUNSET)) 
{ 
} 

당신이 표준화, 표준 파일 이름이나 URI의를 사용할 수 있도록 고유 한 자원 이름의 일종의 할 수 있습니다. 또 다른 방법은 위의 예 에서처럼 이러한 이름에 대한 전역 상수를 정의하는 것입니다. 물론, GImage는 그 포맷을 지원해야합니다.

+0

고마워요! 그것들은 제가 생각하지 못했던 좋은 아이디어들입니다. – Matt

+0

당신을 진심으로 환영합니다. 또 다른 가능성은'GImage'에서'MyImage' 클래스를 파생시키고 그 resourceName으로 확장하여 같은 결과를 얻는 것입니다. 어느 쪽의 방법이라도 장점과 단점이 있습니다. – Sam

관련 문제