반응형
오늘은 timer.performWithDelay를 이용해서 시간을 표시하는 소스를 보겠습니다.
일단 1초 단위로 화면을 갱신해 보일 겁니다.
이 소스를 조금 더 손 보시면 스탑와치도 가능 할 거예요.
소스를 볼까요?
display.setStatusBar(display.HiddenStatusBar)
_W = display.contentWidth;
_H = display.contentHeight;
local bg = display.newRect( 0, 0, 320, 480 )
local secsText = 00
local minsText = 0
local timeText = display.newText(minsText.. ":0" ..secsText, _W/2-60, _H/2-60, "Helvetica", 60)
timeText:setTextColor(43,100,154)
local function updateTime (event)
secsText = secsText + 1
if secsText < 10 then
secsText = "0" ..secsText
elseif secsText > 59 then
secsText = 00
minsText = minsText+1
end
timeText.text = minsText .. ":" ..secsText
end
timer.performWithDelay(1000, updateTime, 0)
처음 세 줄은 설명을 건너 뛰겠습니다.
bg 변수에 스크린 크기만한 사각형을 만듭니다.
(칼라가 지정 안 됐으니 디폴트 색인 흰색이 그려질 겁니다.)
그리고 초를 담을 변수와 분을 담을 변수를 만듭니다.
그리고 시간을 표시할 text를 만들고 칼라를 지정합니다.
그 다음에 updateTime 함수가 있습니다
파라미터로 event를 받는 걸로 봐서 어떤 이벤트 리스너에서 호출 할 겁니다.
일단 함수 내용을 볼까요?
위에 초를 담을 변수 secsText에 1을 더합니다.
그러니까 이 함수를 호출할 때마다 1씩 더해 지겠네요.
다음에 secsText가 10 이하이면 sectText 앞에 0을 붙입니다.
즉 secsText가 1 이면 여기서 01로 변환이 됩니다.
그리고 secsText가 59보다 크면 값을 00으로 바꾸고
minsText에 1을 더합니다.
그리고 timeText.text에 minsText:secsText 값을 할당합니다.
여기까지가 함수 updateTime의 내용입니다.
마지막 줄은 이 함수를 1초 단위로 부르는 timer 입니다.
이 소스는 9분 59초까지 1초 단위로 계속 올라가겠네요.
10분이 되면 다시 0:00이 되겠구요.
이 코드를 조금 변환하면 밀리세컨드부터 시간단위까지 나오게 할 수 있겠죠?
버튼을 만들어서 이 버튼을 누르면 updateTime을 불러오는 timer를 멈추게 하고
뭐 이런 기능들을 넣으면 stopWatch 앱이 될 겁니다.
직접 해 보시면 많이 도움이 되실 거예요.
그럼...
반응형
'Corona SDK > Corona SDK TIPs' 카테고리의 다른 글
내 코드 모듈화 하기 (modularize) (0) | 2011.12.01 |
---|---|
드래그 하기 기초 (0) | 2011.11.25 |
화면 전환 클래스(director.lua) 사용하기 와 랜덤 화면 전환 (2) | 2011.11.24 |
Sprite sheet로 애니메이션 표현하기 (주사위 놀이) (2) | 2011.11.23 |
ui 버튼이용 하기 ui.newButton (0) | 2011.11.18 |
Screen Transitioning. (화면 전환,이동) (0) | 2011.11.16 |
앱 항상 켜 있게 하기 (system.setIdleTimer( enabled )) (0) | 2011.11.15 |
Animation Speed Control 은 movieClip보다 Sprites로 (0) | 2011.11.14 |
특정 영역에 들어가면 객체의 색 바꾸기 (Sensor) (0) | 2011.11.12 |
SlideView 구현하기 (5) | 2011.11.04 |