Corona SDK中的Spawn功能

时间:2014-02-23 23:28:49

标签: function lua corona

好的,我几乎就在那里,但需要一点点推动:

我的垃圾箱会产生,但有一些像我想要的那样开始,然后在大约30秒的垃圾箱数量增加之后,有1000个都聚集在一起..我怎样才能改变我的功能以便它只有它一次几个:

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

并且moveustbin函数只是将垃圾箱沿负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

非常感谢你 詹姆斯

1 个答案:

答案 0 :(得分:0)

上面的“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)

YMMV但是会在5秒内产生10个垃圾箱。