|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.kwis.msp.lcdui.Card
화면에 출력될 수 있는 하나의 단위 클래스입니다.
이 클래스는 화면에 출력할 수 있는 단위가 되며 한 화면은 여러 카드가
쌓인 스택으로 구성됩니다.
스택에 싸인 여러 카드는 한 화면(Display
)에 보여집니다.
한 카드는 여러 화면에 넣을 수는 없습니다.
카드는 화면상에서의 위치와 크기를 가지고 있습니다.
move
나 resize
함수를 이용하여
그 위치나 크기를 변경할 수 있습니다.
repaint
라는 함수를 사용하게 되면, 카드의 일부분에
대해서 다시 이벤트
처리 쓰레드에 의해서 paint
함수가 불려서 화면에 내용이
나타나도록 되어 있습니다.
카드는 사용자 입력을 받을 수 있습니다.
keyNotify
, pointerNotify
,
등의 사용자에 의해서 불려지는 함수가 있으며,
모든 이벤트는 일단 스택 상위의 Card
로 전달됩니다.
전달된 이벤트가
그 카드에서 처리를 한다면 위의 불려지는 함수는 true
를 돌려주며,
그러면, 하위 Card
는 이벤트를 받지 못합니다. 그러나 반대로
false
를 돌려주면, 하위 카드에게 이벤트를 전달하며, 같은 식으로 이벤트를
받은 하위 카드는 true
, false
를 돌려줍니다.
이 과정은 맨 하위
Card
까지 반복이 됩니다.
카드가 입력받은 키는 기본적으로 ITU-Key '0'부터 '9' 그리고 '#', '*'
이 가능합니다. 이 키들은 휴대폰에 꼭 존재하는 키입니다. 그외의 키들은
게임키로 판별이 가능합니다. 지원되는 키들은 EventQueue.UP
,
EventQueue.DOWN
, EventQueue.LEFT
,
EventQueue.RIGHT
,
EventQueue.FIRE
등이며, EventQueue.SOFT1
,
EventQueue.SOFT2
도 있지만,
이 경우에는 폰에서 지원하지 않는
경우가 있으므로 유의해서 사용하십시오.
게임 키로 판별할 경우에는 Display.getGameAction(int)
와
Display.getKeyCode(int)
라는 함수로
키 코드와 게임 키로의 서로의 변환이 가능합니다.
카드가 pushCard
, popCard
에 의해서 보여지거나,
보이지 않게되는 경우에 showNotify
라는
함수가 불립니다.
좌표체계는 화면 좌측 상단이 원점이 되고, 밑으로 가면 y축의 값이 증가하고, 오른쪽으로 가면 x축의 값이 증가하도록 되어 있습니다.
Field Summary | |
protected boolean |
bTrans
Card가 투명한지 아닌지 여부. |
protected int |
h
Card의 화면상의 높이. |
protected int |
w
Card의 화면상의 폭. |
protected int |
x
card의 화면상의 x축 좌표. |
protected int |
y
Card의 화면상의 y축 좌표. |
Constructor Summary | |
Card()
화면 크기 만큼의 카드를 생성합니다. |
|
Card(boolean bTrans)
|
|
Card(Display d)
화면 크기의 카드를 생성합니다. |
|
Card(Display d,
int x,
int y,
int w,
int h)
지정한 display를 위해서 지정한 크기와 위치로 카드를 생성합니다. |
|
Card(Display d,
int x,
int y,
int w,
int h,
boolean bTrans)
|
|
Card(int x,
int y,
int w,
int h)
지정한 크기와 위치로 카드를 생성합니다. |
Method Summary | |
Display |
getDisplay()
카드의 display를 돌려줍니다. |
int |
getHeight()
카드의 높이를 얻어 옵니다. |
int |
getWidth()
카드의 폭을 얻어 옵니다. |
int |
getX()
카드의 x축 위치를 얻어 옵니다. |
int |
getY()
카드의 y축 위치를 얻어 옵니다. |
boolean |
isShown()
Card가 화면에 보이는지 안 보이는지 여부를 돌려줍니다. |
protected boolean |
keyNotify(int type,
int key)
사용자 키 입력이 생성되면 불립니다. |
void |
move(int x,
int y)
카드의 화면상의 위치를 변경합니다. |
protected abstract void |
paint(Graphics g)
Card의 내용을 그려줍니다. |
protected boolean |
pointerNotify(int type,
int x,
int y)
사용자 포인팅 디바이스의 입력이 생성되면 불립니다. |
void |
repaint()
Card전체 영역을 다시 그려줍니다. |
void |
repaint(int x,
int y,
int w,
int h)
지정된 영역을 다시 그려줍니다. |
void |
resize(int w,
int h)
카드의 크기를 변경합니다. w, h 둘중 하나가 0보다 작거나 같은 경우에는 IllegalArgumentException 오류를 발생 시킵니다. |
void |
serviceRepaints()
repaint영역을 다시 그리고, 화면에 출력합니다. repaint할 영역을 강제적으로 그립니다. |
protected void |
showNotify(boolean bShow)
이 카드가 보이기 바로 직전이나, 카드가 화면에서 삭제되는 경우에 불립니다. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected int x
protected int y
protected int w
protected int h
protected boolean bTrans
Constructor Detail |
public Card()
Display.getDefaultDisplay
함수가
돌려주는 Display
의 크기로 잡힙니다.public Card(boolean bTrans)
public Card(Display d)
d
- 카드를 생성할 displaypublic Card(int x, int y, int w, int h)
Display.getDefaultDisplay
함수를 통해서
기본 Display
를 얻어와서 그
Display
를 위한 Card
를 만듭니다.
이때에는 인수로 넘어오는 값으로 위치와 그 크기를
결정합니다.x
- Card의 display상에서의 x축 좌표y
- Card의 display상에서의 y축 좌표w
- Card의 폭h
- Card의 높이IllegalArgumentException
- w나 h가 0 이하인 경우public Card(Display d, int x, int y, int w, int h)
Display
를 위한 Card
를 만듭니다.
이때에는 인수로 넘어오는 값으로 위치와 그 크기를
결정합니다.d
- 카드를 생성할 display.x
- Card의 display상에서의 x축 좌표y
- Card의 display상에서의 y축 좌표w
- Card의 폭h
- Card의 높이IllegalArgumentException
- w나 h가 0 이하인 경우public Card(Display d, int x, int y, int w, int h, boolean bTrans)
Method Detail |
public void move(int x, int y)
x
- Card의 display상에서의 x축 좌표y
- Card의 display상에서의 y축 좌표public void resize(int w, int h)
w
- 카드의 폭h
- 카드의 높이IllegalArgumentException
- w나 h가 0 이하인 경우public int getWidth()
public int getHeight()
public int getX()
public int getY()
protected void showNotify(boolean bShow)
bShow
파라미터가
true
가 되어서
호출되며, 카드가 화면에 사라지기 전에는
bShow
가 false
가 되어서 호출됩니다.
상속하는 클래스에서 이 함수내에 애니메이션이나 타이머를 등록하거나
삭제하는 기능을 넣으시면 됩니다.bShow
- 보이는지 안보이는지 여부protected boolean keyNotify(int type, int key)
키를 누르거나 뗄때에는 param1
이 키 코드 값이 되고,
type
에는
KEY_PRESSED
나 KEY_RELEASED
등과 같은
내부 서브 이벤트 타입값이 넘어 옵니다.
이 함수는 리턴 값으로 false
를 넘기면
이벤트가 하위 카드로 전달됩니다.
만일 true
를 넘기면 이벤트는 더 이상 하위
카드로 전달되지 않습니다.
type
- KEY_PRESSED
나 KEY_RELEASED
,
KEY_TYPED
, KEY_REPEATED
중 하나key
- keyCode값; 자세한 키코드는 EventQueue
를 참조true
,
그렇지 않으면 false
protected boolean pointerNotify(int type, int x, int y)
type
은
POINT_PRESSED
, POINT_RELEASED
,
POINT_DRAGGED
중 하나가 되며,
포인팅 디바이스의 x, y축값은 Card
상에서의
좌표체계 값이 됩니다.
이 함수가 리턴 값으로 false
를 넘기면
이벤트는 하위 카드로 전달됩니다.
만일 true
를 넘기면 이벤트는
더이상 하위 카드로 전달되지 않습니다.
키 코드 값은 기본 ITU 키인 경우에는 대응하는 ASCII 코드 값이 되며,
그렇지 않은 경우에는 모두 음수값으로 넘어 옵니다.
제어 키인 경우에는 Display.getGameAction(int)
으로
해당하는 키인지를 판별합니다.
type
- POINT_PRESSED
나 POINT_RELEASED
,
POINT_DRAGGED
중 하나key
- 키 코드 값Card
에 이벤트 전달하려면 true
,
그렇지 않으면 false
protected abstract void paint(Graphics g)
g
는
Card
에 맞도록 클리핑 되어 있습니다.
translate
, setClip
에 의해서
클리핑 영역을 변경하게 되면,
Card
가 지정하는 이상의 부분을 칠하게 되어 있으므로
유의해서 사용해야 합니다.
그릴 내용은 Graphics객체를 사용하여 그리게 됩니다.g
- 칠해질 graphicspublic void repaint(int x, int y, int w, int h)
x
, y
로 시작해서 폭
w
, 높이 h
만큼의 사각형의 내용을 다시
그려줍니다. 이 함수는 직접 paint
함수를 부르지 않고,
다만 특정 시간 이후에 paint
함수가 이벤트 처리 쓰레드에서
부릅니다.
paint
함수를 부를때 넘어오는 Graphics
객체는
다시 칠할 영역으로 클리핑되어 넘어 옵니다.
클리핑 영역은 이 함수를 부르기전까지의 칠할 영역을 모두 합하므로
repaint
한 영역 보다 클 수 있습니다.
다시 칠해지는 영역은 Card
의 영역을 벗어 날 수 없습니다.
x
- 특정영역을 가르키는 Card
상에서의 x축 좌표y
- 특정영역을 가르키는 Card
상에서의 y축 좌표w
- 특정영역을 넓이h
- 특정영역을 폭public void repaint()
repaint(0, 0, getWidth(), getHeight())
을
부르는것과 마찬가지 효과입니다.public void serviceRepaints()
public boolean isShown()
Card
가 Display
에 pushCard
함수로
등록되어야만 화면에 출력됩니다.public Display getDisplay()
public void repaint(int x, int y, int w, int h)