当一个生成对象横穿屏幕时,我希望当其到达特定的x值时将其删除。

我有随机生成的物体,它们自动横穿屏幕。我希望当物体到达某个 x 位置时,它会自动消失。

local  mRandom = math.random
local  objects = {"Vehicle11" ,"Vehicle21","Vehicle31","Vehicle41"}
local objectTag = 0
local object = {}

local function spawncarright()
local rightcar = {408,312}

   objectTag = objectTag + 1
   local objIdx = mRandom(#objects)
   local objName = objects[objIdx]
   object[objectTag]  = display.newImage(objName..".png")  -- 这里与之前不同
   object[objectTag].x = 32
   object[objectTag].y = rightcar[math.random(1,2)]
   object[objectTag].name = objectTag
transition.to(object[objectTag], {time = 3500, x = 348})

end
timer.performWithDelay(2000,spawncarright,0)

所以一旦达到 object[objectTag].x = 348,该物体就会消失。

点赞
用户1979583
用户1979583

尝试一下:

local function deSpawn()
  for i=1,objectTag do
    if(object[i]~=nil and object[i].x~=nil and object[i].x>=348)then
      -- 如果你想删除对象,那么使用以下两行 --
      object[i]:removeSelf()
      print("Removed object["..i.."]")
      -- 或者,如果你想重新定位对象,那么取消下面的注释 --
      --[[
        spawncarright()
      --]]
    end
  end
end
Runtime:addEventListener("enterFrame",deSpawn)

继续编码…… :)

2013-10-18 15:44:22
用户2868291
用户2868291

transition.to 调用中应该这样做:

object[objectTag].deleteSelf = function(self)
  object[self.name] = nil -- 从表格中删除对象引用
  display.remove(self)
  self = nil
end

local localObj = object[objectTag] -- 这样做,对象不会随着 objectTag 改变而改变。如果 objectTag 增加了,则在过渡结束时,当我们调用函数时,它将不再指向相同的对象

transition.to(localObj, {time = 3500, x = 348, onComplete = function() localObj:deleteSelf() end})
2013-10-18 18:39:56