0

while true doを使用してクリックに反応しos.pullEvent、モニターを更新するループを作成しようとしています。

問題は、画面上のボタンの1つを押したときにのみ画面が更新されることです。これpullEventは、イベントが発生するまでスクリプトを停止するためであることがわかりました。

pullEventモニターの更新を止めないようにすることは可能ですか?

function getClick()
    event,side,x,y = os.pullEvent("monitor_touch")
    button.checkxy(x,y)
end

local tmp = 0;

while true do
    button.label(2, 2, "Test "..tmp)
    button.screen()
    tmp++
    getClick()
end
4

2 に答える 2

0

私は今手元にコンピュータークラフトを持っていないか、関数を調べていませんが、t 秒でイベントを引き起こす関数 os.startTimer(t) を使用できることを知っています (秒だと思います)。

利用方法:

update_rate = 1

local _timer = os.startTimer(update_rate)

while true do
    local event = os.pullEvent()

    if event == _timer then
        --updte_screen()
        _timer = os.startTimer(update_rate)
    elseif event == --some oter events you want to take action for
        --action()
    end
end

注:コードはテストされておらず、私はかなり長い間コンピュータークラフトを使用していなかったので、間違いがあった場合は修正してください。

于 2014-10-31T10:09:50.930 に答える