你好我正在使用Marmalde Quick,所以lua来创建一个游戏。
在我的游戏中,当屏幕的公园被调整时,它会创建一个新音符并将该音符添加到物理中。
function bgTouched(event)
if (director:getCurrentScene() == gameScene) then
if (gameState == gameStates.playing) then
if event.phase == "began" then
addToRoundScore()
if bodyType == 0 then
-- Create object1
b = director:createSprite(event.x, event.y, "textures/beachball.png")
b.name = "ball"
b.strokeWidth=0
b.xAnchor = 1; b.yAnchor = 0 -- test non-0 anchor point for circle
physics:addNode(b, {radius=40})
elseif bodyType == 1 then
-- Create object2
b = director:createSprite(event.x, event.y, "textures/crate.png")
b.name = "crate"
b.strokeWidth=0
b.xAnchor = 0; b.yAnchor = 0.5 -- test non-0 anchor point for rectangle
b.xScale = 2; b.yScale = 1 -- test different scale
physics:addNode(b, {} )
elseif bodyType == 2 then
-- Create obejct3
b = director:createSprite(event.x, event.y, "textures/triangle.png")
b.name = "tri"
b.xAnchor = 0.5; b.yAnchor = 1 -- test non-0 anchor point for polygon
physics:addNode(b, {shape={0,0, 95,0, 48,81}} )end
b.rotation = 22.5
bodyType = (bodyType + 1) % 3
end
end
end
end
bg:addEventListener ("touch", bgTouched)
当事件发生时我想删除所有创建的注释,我尝试使用以下内容:
physics:removeNode(b)
b:removeFromParent()
但是这只删除了最后创建的不是我想要删除它们,有没有办法做到这一点。
由于
答案 0 :(得分:1)
如果我理解你想在添加节点的event.phase == "began"
处理之前清除节点表,你可以重置物理表:
physics = {}
如果代码的其他部分引用了物理节点,并且无法通知物理点指向新表,则可以循环遍历表的所有项并将它们取消:
for k,v in pairs(physics)
physics[k] = nil
end