얼마전 KOW님 질문에 대한 corona sdk 의 답변이었죠?
코로나로 개발하면서 안드로이드의 메뉴 버튼 클릭했을 때 이것을 콘트롤 할 수 있느냐는 거요.
대답은 event.keyName API를 보라는 거였는데요.
그 document를 아래 번역합니다.
예제 소스도 하나 만들었습니다.
event.keyName
Description:
"key" 리스너를 사용해서 눌려진 navigation key 의 이름을 스트링으로 얻습니다. key의 state (up,down)에 대한 사항은 event.phase를 보세요.
Note : home 하고 text 키들 (A-Z,0-9,punctuation)을 capture 될 수 없습니다.
** 안드로이드 디바이스에만 해당 됩니다.***
Syntax: keyName = event.keyName
Example:
-- Key listener
local function onKeyEvent( event )
local phase = event.phase
local keyName = event.keyName
eventTxt.text = "("..phase.." , " .. keyName ..")"
-- we handled the event, so return true.
-- for default behavior, return false.
return true
end
-- Add the key callback
Runtime:addEventListener( "key", onKeyEvent );
Note : keyEvent 리스너에서 false를 사용하면 해당 키의 디폴트 액션이 실행 됩니다.
Parameters: 없음
Returns: string
눌려진 navigation key의 이름이 return 됩니다 : "back", "search", "menu", "volumeUp", "volumeDown".
The D-Pad/Trackball key strings 는 "up", "down", "left", "right", "center" 가 return 됩니다
Note: home 키는 캡쳐 될 수 없습니다.
안드로이드 디바이스에서만 가능하고 코로나 SDK Build 2011.559 이상에서만 작동 합니다.
이상입니다.
위 소스를 조금 변경해서 아래 샘플 코드를 만들어 봤습니다.
-- Key listener
_W = display.contentWidth;
_H = display.contentHeight;
local txtPhase, txtKeyName, haveFun
txtPhase = display.newText( "Phase ", _W/2, _H/5, native.systemFont, 32 )
txtKeyName = display.newText( "KeyName : ", _W/2, _H/3, native.systemFont, 32 )
haveFun = display.newText( "Move", _W/8, _H/2, native.systemFont, 32 )
local function onKeyEvent( event )
local phase = event.phase
local keyName = event.keyName
txtPhase.text = phase;
txtKeyName.text = keyName;
haveFun.x = haveFun.x + 50;
if(haveFun.x > _W) then haveFun.x = 0 end
-- we handled the event, so return true.
-- for default behavior, return false.
return true
end
-- Add the key callback
Runtime:addEventListener( "key", onKeyEvent );
main.lua에 이 소스를 붙여 넣고 실행하시면 화면에 phase와 keyName이 뜰겁니다.
제 디바이스에서 menu , back, search, volumeUp, volumeDown 등이 뜨는 거 확인 했어요.
마지막에 haveFun은 그냥 키가 눌려질 때 글자가 움직이도록 해 봤어요. 심심해서....
KOW님 덕분에 저도 몰랐던 사실을 알게 됬네요.
감사합니다.
'Corona SDK > Corona Doc' 카테고리의 다른 글
Handling Corona System Events (2) | 2012.05.22 |
---|---|
Storyboard의 새로 추가된 기능 - 파라미터 전달과 팝업 기능 - (2) | 2012.04.29 |
timer.performWithDelay() 함수에 대해 알아보기 (2) | 2012.04.28 |
Director Class와 Storyboard API 비교 -2- (0) | 2012.04.21 |
Director Class와 Storyboard API 비교 -1- (0) | 2012.04.20 |
Storyboard, Network 등 변경 사항 안내 (0) | 2012.04.15 |
Tutorial: Detecting Touches in Corona (0) | 2012.04.12 |
Database Access in Corona with SQLite - 2 - (0) | 2012.04.05 |
Database Access in Corona with SQLite - 1 - (0) | 2012.04.04 |
Storyboard API 추가 사항 안내 (0) | 2012.04.02 |