2013-12-16 4 views
1

Мне нужно проверить, нет ли «regalo», или нет, перед вызовом onComplete, потому что иногда он удаляется событием Collision и когда я вызываю onComplete = removeRegalo, он возвращает значение ошибки nil ,Corona: Проверьте значение nil перед вызовом onComplete

Ошибка: Попытка вызвать метод 'removeSelf' (нулевую ценность)

Любую идею?

local function removeRegalo(event) 
     event:removeSelf() 
     event = nil 
    end 
    local function tiraregalo() 
     regalo = display.newImageRect("images/regalo.png", 30, 30) 
     regalo.x = ship.x 
     regalo.y = ship.y 
     regalo:toFront() 
     regalo.name = "regalo" 
     physics.addBody(regalo, {isSensor = true }) 
     grupoCasas:insert(regalo) 
     local wind = 10 
     transition.to(regalo,{time=1500, y = screenH + 30, x = regalo.x + wind,rotation= math.random(-20,60), onComplete=removeRegalo}) 
    end 
function onCollision(event) 
    if(event.object1.name == "casa" and event.object2.name == "regalo") then 
     display.remove(event.object2) 
    end 
end 
+0

Как это связано с 'iOS'? –

+0

Попробуйте распечатать событие в 'removeRegalo', onComplete помещает событие в качестве параметра? Может быть помещено 'event' в качестве внешнего var out' removeRegalo() '. – Tim

ответ

0

Будет что-то вроде этой работы?

if regalo ~= nil then 
    -- object exists so do some code 
end 

Надеется, что это помогает :)

+0

не помогает, вот ошибка сообщения: попытка вызова метода 'removeSelf' (значение nil) @ apmartin1991 – benLIVE

0

Может быть, это будет делать эту работу.

local function removeRegalo(event) 
    -- Check if event:removeSelf exists 
    if event:removeSelf then 
     event:removeSelf() 
     event = nil 
    end 
end 
1
local function removeRegalo(event) 
     if event == nil then return end 
     event:removeSelf() 
     -- event = nil Not really needed, but okay if you want it here. 
    end 
0

Вот решение:

 local function removeRegalo(event) 

      display.remove(event) 
      event = nil 
     end 

событие = ноль --This необязателен @ 111WARLOCK111 сказал. Спасибо!

0
local function removeRegalo(event) 
     local tempObject=event.target 
     if tempObject then   
       tempObject:removeSelf() 
       tempObject = nil 
     end 
    end 
Смежные вопросы