Corona SDK中的生成函数

好的,我有点接近成功,但需要一点推动:

我的垃圾桶已经生成,但一开始只有几个,然后在约30秒后,垃圾桶数量开始增加,最终成千上万个垃圾桶堆在一起...我该怎么修改我的函数,使它一次只会生成几个垃圾桶:

function spawnDustbin()
dustbin = {}
for i = 1,800 do
    dustbin[i] = display.newImage("dustbin.png")
    dustbin[i].xScale = 0.55
    dustbin[i].yScale = 0.55
    dustbin[i].y = 555
    dustbin[i].x = (math.random(1000,1500) * i)
    dustbin[i].speed = 4
    physics.addBody( dustbin[i], "static", { friction=1.0, density=1.0, bounce=0, radius=30,} )
    dustbin[i].enterFrame = moveDustbin
    Runtime:addEventListener("enterFrame", dustbin[i])
    end
end

而 moveDustbin 函数只是将垃圾桶向负 x 方向移动:

   function moveDustbin(self,event)
    if self.x < -2560 then
    self.x = 2560
    else
                self.x = self.x - val
            end
        end

前20多秒: http://i.stack.imgur.com/7iEeP.png

20秒后: http://i.stack.imgur.com/aae0D.png

非常感谢。 James

点赞
用户3316737
用户3316737

上面的“spawnDustbin”函数每帧会生成800个垃圾桶。这将极大地影响您的性能,而且我相信您不希望每帧都创建那么多对象。

您可能想做这样的事情:

local dustbin = {}
local i = 0
local function spawnDustbin()
    i = i+1
    dustbin[i] = display.newImage("dustbin.png")
    dustbin[i].xScale = 0.55
    dustbin[i].yScale = 0.55
    dustbin[i].y = 555
    dustbin[i].x = (math.random(1000,1500) * i)
    dustbin[i].speed = 4
    physics.addBody( dustbin[i], "static", { friction=1.0, density=1.0, bounce=0, radius=30,} )
    dustbin[i].enterFrame = moveDustbin
    Runtime:addEventListener("enterFrame", dustbin[i])
end

timer.performWithDelay(500, spawnDustbin, 10)

你的经验可能会有所不同,但这将在5秒内生成10个垃圾桶。

2014-02-24 16:14:02