描画オブジェクト移動中のキャンセル・一時停止・再開の仕方です。transitionの移動などを行う関数において、同じ使用方法になっています。
サンプルプログラムでは、キャンセル等を実行するために少し遅らせてから処理を実行させたいので、「タイマ」の機能を使用しています。
1. キャンセル:transition.cancel()
移動をキャンセルしたい場合、transition.cancel()関数を使用します。移動開始直後にcancelを呼び出しても止まらないため、1秒後に呼び出すようにしています。
1.1 引数:なし
すべての移動が停止します。
local obj1 = display.newRect(100, 100, 30, 30)
obj1:setFillColor(1, 0, 0, 1)
local obj2 = display.newRect(100, 100, 30, 30)
obj2:setFillColor(1, 0, 0, 1)
local retTransition1 = transition.moveTo(obj1, {x = 100, y = 200, time = 5000})
local retTransition2 = transition.moveTo(obj2, {x = 200, y = 100, time = 5000})
local function CancelTest()
transition.cancel()
end
timer.performWithDelay(1000, CancelTest)
1.2 引数:描画オブジェクト
指定した描画オブジェクトのみが移動を停止します。以下のプログラムの場合、下に移動しているオブジェクトが停止します。
local obj1 = display.newRect(100, 100, 30, 30)
obj1:setFillColor(1, 0, 0, 1)
local obj2 = display.newRect(100, 100, 30, 30)
obj2:setFillColor(1, 0, 0, 1)
local retTransition1 = transition.moveTo(obj1, {x = 100, y = 200, time = 5000})
local retTransition2 = transition.moveTo(obj2, {x = 200, y = 100, time = 5000})
local function CancelTest()
transition.cancel(obj1)
end
timer.performWithDelay(1000, CancelTest)
1.3 引数:戻り値
指定した描画オブジェクトのみが移動を停止します。以下のプログラムの場合、下に移動しているオブジェクトが停止します。
local obj1 = display.newRect(100, 100, 30, 30)
obj1:setFillColor(1, 0, 0, 1)
local obj2 = display.newRect(100, 100, 30, 30)
obj2:setFillColor(1, 0, 0, 1)
local retTransition1 = transition.moveTo(obj1, {x = 100, y = 200, time = 5000})
local retTransition2 = transition.moveTo(obj2, {x = 200, y = 100, time = 5000})
local function CancelTest()
transition.cancel(retTransition1)
end
timer.performWithDelay(1000, CancelTest)
1.4 引数:tag
指定した描画オブジェクトのみが移動を停止します。以下のプログラムの場合、下に移動しているオブジェクトが停止します。
local obj1 = display.newRect(100, 100, 30, 30)
obj1:setFillColor(1, 0, 0, 1)
local obj2 = display.newRect(100, 100, 30, 30)
obj2:setFillColor(1, 0, 0, 1)
local retTransition1 = transition.moveTo(obj1, {x = 100, y = 200, time
= 5000, tag = “transition1”})
local retTransition2 = transition.moveTo(obj2, {x = 200, y = 100, time = 5000, tag = “transition2”})
local function CancelTest()
transition.cancel(“transition1”)
end
timer.performWithDelay(1000, CancelTest)
2. 一時停止と再開
一時停止は以下の関数を使用します。
transition.pause()
一時停止からの再開は以下の関数を使用します。
transition.resume()
一時停止と再開も基本的にはキャンセルと同じ方法(引数の使い方)です。なので、ここでは簡単に1例だけ示します。下に移動している四角を移動開始から1秒後に一時停止します。続いて1秒後に移動を再開するようにしています。
local obj1 = display.newRect(100, 100, 30, 30)
obj1:setFillColor(1, 0, 0, 1)
local obj2 = display.newRect(100, 100, 30, 30)
obj2:setFillColor(1, 0, 0, 1)
local retTransition1 = transition.moveTo(obj1, {x = 100, y = 200, time = 5000, tag = “transition1”})
local retTransition2 = transition.moveTo(obj2, {x = 200, y = 100, time = 5000, tag = “transition2”})
local function ResumeTest()
transition.resume(“transition1”)
end
local function PauseTest()
transition.pause(“transition1”)
timer.performWithDelay(1000, ResumeTest)
end
timer.performWithDelay(1000, PauseTest)
<更新履歴>
版 | 更新日 | Corona SDKのバージョン |
新規作成 | 2015年9月7日 | v2015.2646 |