時間関連のサンプル
Luaridaで時間を扱うサンプルです。ダウンロードはここから(timesample.apk)。
年月日と時分秒
Luaridaで年月日と時分秒を取得するコマンドは、os.date()です。これはLuaが持つ標準命令です。参照:http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#pdf-os.date
- 年月日を取得する
例えば、os.date("%Y年%m月%d日")と書くと、%Y, %m, %dに年月日が入ります。
- 時分秒を取得する
例えば、os.date("%H時%M分%S秒")と書くと、%H, %M, %Sに時分秒が入ります。
秒を取得する
system.getSec()を使うと、us精度の秒を求めることができます。
local us = system.getSec()
この数値を利用して、1秒よりも細かな時間差を計算することができるので、例のように250ms毎とに処理を行うといったことも可能です。
local psec = system.getSec() while(true)do while(psec>system.getSec())do end --250ms経つまで待つ psec = system.getSec() + 0.25 --必要な処理を書く end
時間サンプルでは、ドロイド君が一秒に二回上下します。
時間コマンド使用サンプル動画
以下に、サンプルプログラムのソースを書いておきます。
------------------------------------------ --時間サンプル ------------------------------------------ --関数宣言-------------------------------- main={} --mainメソッド ------------------------------------------ LuaridaPath="/sdcard/luarida/timesample" --luaファイルを保存しているPath ------------------------------------------ mt={} mt.__newindex=function(mtt,mtn,mtv) dialog( "Error Message", "宣言していない変数 "..mtn.." に値を入れようとしています", 0 ) toast("画面タッチで実行を続けます", 1) touch(3) end mt.__index=function(mtt,mtn) dialog( "Error Message", "変数 "..mtn.." は宣言されていません", 0 ) toast("画面タッチで実行を続けます", 1) touch(3) end setmetatable(_G,mt) --------以下が実プログラム---------------- ------------------------------------------ --メインプログラム ------------------------------------------ function main() local w,h local x,y,s local b = color(0,0,0) local wh = color(255,255,255) local droidbmp local ch = 0 local sec, psec local cx, cy --画面サイズ取得 w,h = canvas.getviewSize() cx = w/2 cy = h/2 --背景を白にする canvas.drawCls( wh ) --ワークエリア画面をクリアします canvas.workCls() --ワークに背景を確保する canvas.getg( 0, 0, 63, 63, 64, 0, 127, 63 ) --ワークエリアの(0,0)-(79,93)に、ドロイド画像を読み込みます droidbmp = LuaridaPath.."/".."droid0.png" if( canvas.loadBmp( droidbmp, 0, 0, 63, 127 )==-1)then dialog( droidbmp, "ロードに失敗しました",1 ) do return end end toast("画面中央付近をタッチすると終了します", 0 ) --画面上にセンタリングして年月日を描く canvas.putTextRotate( os.date("%Y年%m月%d日"), cx, 24, 0, 24, b ) psec = system.getSec() while(true)do while(psec>system.getSec())do end --250ms経つまで待つ psec = system.getSec() + 0.25 ch = 1 - ch --背景を描きます canvas.putg( cx-32, cy-32, cx+31, cy+31, 64, 0, 127, 63 ) --ドロイド君を描きます canvas.putg( cx-32, cy-32, cx+31, cy+31, 0, ch*64, 63, ch*64+63 ) --時刻を表示します。drawTextCenterを使っているので、putflush()しなくてもflushされます。 canvas.drawTextCenter( os.date(" %H時%M分%S秒"), cx, cy+60, 24, b, wh ) x,y,s = touch() if( s~=1 )then if( x>=cx-40 and x<=cx+40 and y>=cy-40 and y<=cy+40 )then break end end end end main()