- index, selectedIndex

 

1. 메뉴 포커스 이동 -> index 변화

2. 메뉴 선택 -> selectedIndex에 index 지정, 이전 selectedIndex와 다르면 hasChanged = true;

3. hasChanged 가 true라면 뭐든 생성 -> selectedIndex 에 해당하는 뭐든 생성, hasChanged = false;

* 외부에서 내용변경시 2번에서 시작...

 

 

- user input을 공통적으로 막을 수 있도록한다.

 

1. key 입력은 main에서 시작되므로 이를 main에서 관리하도록.

 

 

- 각 페이지가 갖는 서브페이지에 key input을 전달하는 방법을 모색

 

1. main에 _keyListener 변수로 key input을 직접 전달

2. 페이지에서 원할 때 _keyListener를 등록할 수 있음.

3. IKeyListener 로 구현

 

 

- 각 페이지들은 다른 페이지들과 연관관계가 없도록(적도록) 구성한다.

 

1. 페이지간의 이동이 원활해진다.

2. 데이터 참조가 목적이라면 데이터객체를 독립시켜 각각 참조하여 관계를 없앤다.

 

 

- 페이지 전환시 동작 순서

 

0.5. user input 막음

1. 이전 페이지 사라짐 -> 사라짐 완료

2. 현재 페이지 나타남 -> 나타남 완료

2.5. user input 시작

 

 

- 이전 페이지로 이동하는 방법 모색

 

1. 각 페이지는 고유의 id가 있다.

2. 현재 페이지는 이전 페이지의 id를 가지고 있다. (또는, main에서 페이지 순서를 관리한다)

3. 이전 이동시 이전 페이지의 id를 이용

 

 

- AbstractPage : 각각의 페이지 클래스

 

1. implements IKeyListener :: pressKey(code) : 키 입력을 받을 수 있는 객체

1.1. implements IKeyListener :: focusIn() : 키 객체로 지정되었을 때;

1.2. implements IKeyListener :: focusOut() : 키 객체가 아님으로 지정되었을 때;

2. create() : 데이터 로드 시작, 보여지는 것 생성

3. dispose() : 데이터 이외의 보여지는 것 제거

4. live() : 약한 전환을 위한 메서드, background에서 계속 진행하고 싶을 때 (약한 전환시에는 작동하지 않는 메서드)

5. kill() : 상동

6. index : 포커스가 맞춰진 index

7. selectedIndex : user가 선택한 index

8. hasChanged() : selectedIndex의 변화가 있는지 확인

9. clearChanged() : selectedIndex의 변화가 없음으로 지정

10. setChanged() : selectedIndex의 변화가 있음으로 지정

11. appear() : create()이후 나타나는 동작 시작

12. disappear() : dispose()이전 사라지는 동작 시작

 

 

- AbstractPageContainer : 페이지안에 페이지를 가질 수 있는 클래스

 

1. extends AbstractPage

2. addPage(AbstractPage) : 서브 페이지를 추가

3. removePage(AbstractPage) : 서브페이지를 제거

4. createSubPage() : selectedIndex의 서브페이지를 생성

5. removeSubPage() : 현재 서브페이지를 제거

6. subIndex : 서브페이지의 인덱스(선택된 서브의 sub.index or sub.selectedIndex)

* 서브페이지 생성시 addChild()는 별도로 구현한다. - 각 페이지마다 붙여지는 위치가 다르므로..