好的,我几乎就在那里,但需要一点点推动:
我的垃圾箱会产生,但有一些像我想要的那样开始,然后在大约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
非常感谢你 詹姆斯
答案 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个垃圾箱。