尝试将nil与(i).x<上的数字进行比较。 100然后

时间:2014-04-09 14:39:44

标签: lua corona

我正在尝试生成一个新的display.newRect,如果旧的那个是< 100但我得到了'尝试将数字与数字进行比较'

function hollSpawne(i)
    if (i).x < 100 then
         hollspawn()
    end
end
HollControll = timer.performWithDelay(  1400 , hollSpawne, 0 )

我无法看到错误,有人可以解释一下如何解决这个问题吗?

Fullcode:

 function pluspoint(i)
 score = score + 1
 display.remove(i)
 end

 screenGroup = self.view
 holl = {}
 hollSpawn = function()

    i = display.newRect( 0, 0, math.random(10, 500), 53 )
    i.x = display.contentWidth + i.contentWidth + 10
    i.y = display.contentHeight - 53/2
    i:setFillColor( 1, 0, 0 )
    i.name = "hollgameover"
    physics.addBody(i, "static", {density=.1, bounce=0.5, friction=.2,filter=playerCollisionFilter } )      
    trans55 = transition.to(i,{time=2000, x=display.contentWidth - display.contentWidth - i.contentWidth/2 - 20, onComplete=pluspoint, transition=easing.OutExpo } )
    holl[#holl+1] = i
    screenGroup:insert(i)
end 
timereholl = timer.performWithDelay(  100 , hollSpawn, 1 )

function hollSpawne(i)
    if (i).x < 100 then
         hollspawn()
    end
end
HollControll = timer.performWithDelay(  1400 , hollSpawne, 0 )

-

-

新测试仍无效

 screenGroup = self.view
 holl = {}
 hollSpawn = function()

    i = display.newRect( 0, 0, math.random(10, 500), 53 )
    i.x = display.contentWidth + i.contentWidth + 10
    i.y = display.contentHeight - 53/2
    i:setFillColor( 1, 0, 0 )
    i.name = "hollgameover"
    physics.addBody(i, "static", {density=.1, bounce=0.5, friction=.2,filter=playerCollisionFilter } )      
    trans55 = transition.to(i,{time=2000, x=display.contentWidth - display.contentWidth - i.contentWidth/2 - 20, onComplete=pluspoint, transition=easing.OutExpo } )
    holl[#holl+1] = i
    screenGroup:insert(i)

end 
timereholl = timer.performWithDelay(  100 , hollSpawn, 1 )

function hollSpawne(event)
    if (i).x < 100 then
         hollSpawn()
    end
end
HollControll = timer.performWithDelay( 1400 , hollSpawne, 0 )

2 个答案:

答案 0 :(得分:0)

你的计时器在没有参数的情况下调用hollSpawne,但在功能上你使用&#39; i&#39;参数。 试试这个:

local function hollSpawne(i)
    if i.x < 100 then
         hollspawn()
    end
end
HollControll = timer.performWithDelay(  1400 , function()
    hollSpawne(my_i_value)
end, 0 )

答案 1 :(得分:0)

计时器以事件作为参数调用侦听器,因此我是一个事件。由于我是一个全球性的你可以让arg成为事件:

function hollSpawne(event)
    if (i).x < 100 then
         hollSpawn()
    end
end

请注意,我使用的是hollSpawn而不是hollspawn,因为我认为这是一个会导致其他错误的拼写错误。

关于风格的旁注:不确定为什么你需要() i左右,un-Lua'ish。您也可以在模块中声明i本地:

local i

screenGroup = self.view
holl = {}
hollSpawn = function()
    i = display.newRect( 0, 0, math.random(10, 500), 53 )
    ...