描画オブジェクトやグループの削除方法について説明します。
1. 描画オブジェクトやグループの削除
描画オブジェクトやグループを削除する場合、以下の関数を使用します。
display.remove(object)
1.1 描画オブジェクトの削除
削除するにはどの描画オブジェクトを削除するのか指定しなくてはいけません。そこで変数に代入後削除を行っています。
— 円オブジェクトの作成
local circle = display.newCircle(100, 100, 50)
— 作成した円オブジェクトの削除
display.remove(circle)
— メモリの開放
circle = nil
1.2 グループの削除
グループの削除方法も基本的に描画オブジェクトの削除と同じです。
— グループの作成
local group = display.newGroup()
— グループに円オブジェクトを追加
display.newCircle(group, 100, 100, 50)
— 作成したグループの削除
display.remove(group)
— メモリの開放
group = nil
1.3 グループ内のオブジェクトの削除
グループに登録されているオブジェクトの削除方法にはいくつかの方法があります。その方法を以下で説明します。
1.3.1 displayのremoveで削除
今までと同様にdisplay.remove(object)を使用して削除する方法です。
— グループの作成
local group = display.newGroup()
— グループに円オブジェクトを追加
local circle1 = display.newCircle(group, 100, 100, 50)
local circle2 = display.newCircle(group, 100, 300, 50)
— 作成したグループの削除
display.remove(circle1)
— メモリの開放
circle1 = nil
1.3.2 グループのremoveで削除
グループにあるremove関数を利用して削除する方法です。注意するところは、グループにある関数なので、呼び出し時に「.(ドット)」ではなく「:(コロン)」を使用するところです。
— グループの作成
local group = display.newGroup()
— グループに円オブジェクトを追加
local circle1 = display.newCircle(group, 100, 100, 50)
local circle2 = display.newCircle(group, 100, 300, 50)
— 作成したグループの削除
group:remove(circle1)
— メモリの開放
circle1 = nil
1.4 グループ内のグループの削除
グループ内のグループを削除する場合も基本的に何も変わりはしません。
1.4.1 displayのremoveで削除
display.remove(object)を使用して削除する方法です。
— グループの作成
local group = display.newGroup()
local group1 = display.newGroup()
local group2 = display.newGroup()
local group3 = display.newGroup()
— グループ1~3を親のグループに登録
group:insert(group1)
group:insert(group2)
group:insert(group3)
— グループ1(赤色)
local circle1 = display.newCircle(group1, 150, 100, 50)
circle1:setFillColor(1, 0, 0, 1)
local rect1 = display.newRect(group1, 150, 100, 200, 50)
rect1:setFillColor(1, 0, 0, 1)
— グループ1(緑色)
local circle2 = display.newCircle(group2, 125, 150, 50)
circle2:setFillColor(0, 1, 0, 1)
local rect2 = display.newRect(group2, 125, 150, 50, 200)
rect2:setFillColor(0, 1, 0, 1)
— グループ1(青色)
local circle3 = display.newCircle(group3, 175, 150, 50)
circle3:setFillColor(0, 0, 1, 1)
local rect3 = display.newRect(group3, 175, 150, 50, 200)
rect3:setFillColor(0, 0, 1, 1)
— 作成したグループの削除
display.remove(group1)
— メモリの開放
group1 = nil
1.4.2 グループのremoveで削除
グループにあるremove関数を利用して削除する方法です。注意するところは、グループにある関数なので、呼び出し時に「.(ドット)」ではなく「:(コロン)」を使用するところです。
— グループの作成
local group = display.newGroup()
local group1 = display.newGroup()
local group2 = display.newGroup()
local group3 = display.newGroup()
— グループ1~3を親のグループに登録
group:insert(group1)
group:insert(group2)
group:insert(group3)
— グループ1(赤色)
local circle1 = display.newCircle(group1, 150, 100, 50)
circle1:setFillColor(1, 0, 0, 1)
local rect1 = display.newRect(group1, 150, 100, 200, 50)
rect1:setFillColor(1, 0, 0, 1)
— グループ1(緑色)
local circle2 = display.newCircle(group2, 125, 150, 50)
circle2:setFillColor(0, 1, 0, 1)
local rect2 = display.newRect(group2, 125, 150, 50, 200)
rect2:setFillColor(0, 1, 0, 1)
— グループ1(青色)
local circle3 = display.newCircle(group3, 175, 150, 50)
circle3:setFillColor(0, 0, 1, 1)
local rect3 = display.newRect(group3, 175, 150, 50, 200)
rect3:setFillColor(0, 0, 1, 1)
— 作成したグループの削除
group:remove(group1)
— メモリの開放
group1 = nil
2. 削除した後の変数
四角形や円などの描画オブジェクトを削除後、必ずその変数には「nil」を代入します。メモリを解放するために必要な作業です。忘れないようにしましょう。
display.remove()などは画面から削除しただけで、オブジェクト自体はメモリに残っています。「nil」を代入して初めてメモリを解放することができます。「nil」の代入を忘れないように気を付けてください。
<更新履歴>
版 | 更新日 | Corona SDKのバージョン |
新規作成 | 2015年8月15日 | v2015.2646 |