タイマ(インターバル処理)

このエントリーをはてなブックマークに追加

 一定時間ごとに繰り返し処理を実行、少し時間を遅らせてから処理を実行させるなどのような処理を行う場合、タイマを使用します。

 

1.関数の説明

 リファレンスを見ると関数と引数は以下の通りです。

timer.performWithDelay( delay, listener [, iterations] )
注:大かっこ([と])で囲まれている引数は省略可能を意味しています。

 

引数名 説明
delay 実行するまで遅らせる時間
listener 実行する関数
iterations [省略可能]
繰り返し回数
-1:永久に繰り返す
0:永久に繰り返す
1以上:繰り返し回数

2. 1度だけ処理を実行

 円オブジェクトを1秒後に移動させます。白い線は「x=100」と「y=100」の線です。

— 動かす対象物
local circle = display.newCircle(x, y, 50)
— タイマ処理が呼び出す関数
local function MoveObject()
    circle.y = circle.y + 100
end
— タイマ(1秒後に処理を実行)
timer.performWithDelay(1000, MoveObject)

 

移動前

 

移動後

 

3. 指定回数繰り返し

 円オブジェクトを1秒毎に5回繰り返し移動させます。

— 動かす対象物
local circle = display.newCircle(x, y, 50)
— タイマ処理が呼び出す関数
local function MoveObject()
    circle.y = circle.y + 100
end
— タイマ(1秒後に処理を実行)
timer.performWithDelay(1000, MoveObject, 5)

 

4. 永久に繰り返し

 円オブジェクトを1秒毎に永久に繰り返し移動させます。プログラムを実行すると、円が画面外に出ていきます。

 

4.1 永久に繰り返す

— 動かす対象物
local circle = display.newCircle(x, y, 50)
— タイマ処理が呼び出す関数
local function MoveObject()
     circle.y = circle.y + 50
end
— タイマ(1秒後に処理を実行)
timer.performWithDelay(1000, MoveObject, -1)

 

4.2 タイマを停止

 指定回数および永久に繰り返すタイマを実行中、タイマを停止させる方法についてです。「timer.cancel()」関数を実行します。引数に対象のタイマを指定します。

— 動かす対象物
local circle = display.newCircle(x, y, 50)
— タイマ処理が呼び出す関数
local function MoveObject()
    circle.y = circle.y + 50
end
— タイマ(1秒後に処理を実行)
local tm = timer.performWithDelay(1000, MoveObject, -1)

— タイマ処理停止
local function StopTimer()
    timer.cancel(tm)
end
— 3.5秒後に円を動かすタイマ処理を停止させる
timer.performWithDelay(3500, StopTimer)

 

5. タイマへのパラメータ設定

 タイマが呼び出す関数に対してパラメータを設定することができます。

— 動かす対象物
local circle = display.newCircle(x, y, 50)
— タイマ処理が呼び出す関数
local function MoveObject(event)
    local params = event.source.params
    circle.y = circle.y + params.moveValue
end
— タイマ(1秒後に処理を実行)
local tm = timer.performWithDelay(1000, MoveObject)
— 実行時のパラメータ
tm.params = {moveValue = 200}

 実行すると、指定したピクセル数分だけ移動します。

       

<更新履歴>

更新日 Corona SDKのバージョン
新規作成 2015年8月16日 v2015.2646

 

 

メニューへ          次へ

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)