본문 바로가기
이미지맥스 그리고 루아(lua)/루아(lua)

[lua] 시간 설정 및 경과 확인 함수 getClock() setClock()

by 위치결정 2021. 5. 12.
반응형

2021.05.10 - [이미지맥스, lua/루아 lua] - [lua] 루아에서 sleep() 함수를 구현하기

지난 시간에 sleep()를 만들어 보았습니다. sleep() 함수의 단점이라면 시간지연을 하는 동안 다른 동작을 할수가 없이 무조건 모든 동작이 멈춘상태로 시간을 보내야 한다는 점인데요.

여기서 sleep() 과는 다른 방법으로 동작을 지연시킬 방법을 생각해 보았습니다.

 

실행할 시간을 지정해서 현재 시간과 비교하여 원하는 시간이 지나면 동작하게 꾸미는것이 바로 그것이죠.

시간을 설정하기 때문에 sleep() 과는 달리 설정한 시간이 되기 전까지는 다른 동작도 동작하게 할수 있는 장점이 있습니다.

 

구현 방안은 현재 시점에 시간을 설정하고, 시간이 흐른뒤 설정한 시간과 비교하여 차값를 구해 얼마나 시간이 흘렀는지 체크하여 조건에 맞으면 동작을 행하게 만드는 것입니다.

-- 시간 설정
function setClock()
    return os.clock()
end

-- 경과 시간
function getClock(clock)
    return os.clock() - clock
end

setClock() 함수를 이용하여 현재 시간을 기억해두고, getClock() 을 이용하여 경과한 시간을 알수 있습니다.

이를 이용해 원하는 시간만큼 시간이 경과하면 원하는 동작을 할수 있게 만드는것이죠.

-- 예시) 특정 윈도우 창을 일정 60초가 경과한 뒤 끄고 싶은 경우
if isImage('window_close_btn') then
    if window_close_time == nil then
        window_close_time = setClock()
    end
    if getClock(window_close_time) > 60 then
        clickImage('window_close_btn')
    end
else
    window_close_time = nil
end

이미지맥스에서 이미지의 검색 결과를 boolean값으로 받도록 isImage() 함수와 이미지를 클릭하는 clickImage() 함수를 별도로 선언하여 사용하였는데 이전 글에서 다룬적이 있으므로 참조해주시면 좋을 것 같습니다.

2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기

2021.05.04 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] 루아 내부함수를 응용해보자! -4- (clickImage()함수)

 

더욱 더 여유로워 질것 같습니다.

반응형

댓글