Cocos2d-x에서 안드로이드 backbutton 처리

1. Layer 클래스의 headerfile에 함수 선언


void onKeyReleased( cocos2d::EventKeyboard::KeyCode keycode, cocos2d::Event *event );


2. Layer 클래스의 cpp 파일내 init()함수에 keypad enable 처리


this->setKeypadEnabled(true);


3. Layer 클래스의 cpp 파일내 onKeyReleased() body 구현하여 back 버튼 터치시 실행할 내용 작성


void MessageLayer::onKeyReleased( cocos2d::EventKeyboard::KeyCode keycode, cocos2d::Event *event )
{
if (keycode == EventKeyboard::KeyCode::KEY_BACK)
{
auto hScene = HomeLayer::createScene();
Director::getInstance()->replaceScene(hScene);
}
}


image문자를 text 문자로 변환(tesseract ocr 사용) (진행중)

1. tesseract ocr project 받기

– 참조:  http://gaut.am/making-an-ocr-android-app-using-tesseract/

: 위 url은 java 기반의 tesseract eclipse 프로젝틀 받아서 install 하는 방법이 정리되어 있음.

2. 1에서 받은 eclipse project에서 ndk lib로 빌드하기

2.1  ndk lib로 빌드하기

– 참조:  https://droidcomp.wordpress.com/2012/08/04/building-the-tesseract-ndk-library-for-android/

2.2 ndk build 환경 설정하기

–  참조 : http://dsnight.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Eclipse%EC%97%90%EC%84%9C-NDKbuild-%ED%95%98%EA%B8%B0

3. ndk build하여 받은 so 파일을 이용하여 내 프로젝트에서 이미지를 text로 conversion하기
:

Sample Project v0.5 release

– 단어장 very tentative version

– 기간: 2015.01.01  ~ 2015.02.16

– 스토리보드:
(https://drive.google.com/?tab=wo&authuser=0#folders/0B6JnmNRYJiXQZUI2bUR0V0FET2c)

– code: SampleProject_v0.5_20150216.zip
(https://drive.google.com/?tab=wo&authuser=0#folders/0Byc4JNftwMHgMng0MWN5UVB6d2s)

– main feature

: Intro, Menu (lesson 1), Word Card (sample data 9개에 대한 ‘Cafe’에서의 단어), Settings, MyPage

: 개발관련 상세 feature : scene/layer 이동, swiping, json 연동,

: not included features: assert, error handling, image/sound tunning

– future plan

: 효도영어 기반 재구조 필요

로컬 데이터 저장관련(TBD)

  • 현재
    • 문제:  json 사용하여 데이타 update시 file write 기능 개발 필요
    • 사용하는 json parser opensource(cJSON)은 기존의 json file을 update하는 용도가 아니다.
  • 안1. read-only data는 json 유지, dynamic data는 cocos2d-x에서 제공하는 UserDefault class 사용
    • 예상문제: myword나 archived word list가 많아지면 성능저하 예상
    • 해결안: 필요자료만 끊어서 읽기
  • 안2. json으로 그대로 유지, archive/myWord list는 WordCard 파일에 flag로 저장하여 file update 기능만 추가
    • 예상문제: ??
  • [참고] 어플 데이터 저장하는 4가지 메커니즘
    • 프레퍼런스(Preference): key-value 로 데이터 저장. 어플이 시장될때 로드되어야 하는 기본적인 데이터(인사말, 폰트, 환경설정 등)
    • 파일 저장
    • 로컬 데이터베이스
    • 네트워크를 통한 서버에 저장

여러개의 겹친 layer에서 event listener 관리

  • 1. 각 layer마다 listener를 정의한다.
  • 2. listener 정의시 m_listener->setSwallowTouches(true); 를 설정한다.
    • 말 그대로 해당  layer에서 touch를 swallow하기위한 option
    • true로 세팅하면 아래 layer의 listener에 event 전달이 안된다.
  • 3. listener의 onTouchBegan발생시 callback 함수에서 (onTouchBegan() )
    • return false; 이면 event를 swallow하지 않는다. 아래 layer로 event가 전달된다.
    • return ture; 이면 해당 callback 함수 실행 수 event를 해당 layer에서 swallow한다. 아래 layer로 event가 전달되지 않는다.