2013-02-11 2 views
0

Как сделать эту икру «Math.random (1,3)» smile.png каждые 10 секунд, и удалить smile.png после левой части экранаКак Spawn несколько объектов каждые 10 секунд

<code> 
local physics = require ("physics"); 
physics.start(); 

local function listener(me) 
transition.to (me, {time = math.random(1000,4000), x = math.random(10,310), y = -30, onComplete = function()listener(me)end}); 
end 

--Spawning multiple objects in randoms locations 
local function spawnsmile() 

     local smile = display.newImageRect("smile.png", 45, 45); 
     smile:setReferencePoint(display.CenterReferencePoint); 
     smile.x = math.random(-10, 400); 
     smile.y = -40; 
     transition.to(smile, {time = math.random(2000, 8000), x = math.random(-10, 400) , y = 600,}); 
     physics.addBody(smile, "dynamic", {density = 0.1, bounce = 0.1, friction = .1, radius = 0}); 

       --Adding touch event 
       smile:addEventListener("touch", smile); 
end 
tmr = timer.performWithDelay(0, spawnsmile, total_smiles); 
<code> 

с уважением Кевин

ответ

2

Ваш код не был в продаже. Всего присвоение и Задержка аргумент.

Рабочий код:

local physics = require ("physics"); 
physics.start(); 

local function listener(me) 
    transition.to (me, {time = math.random(1000,4000), x = math.random(10,310), y = -30, onComplete = function()listener(me)end}); 
end 

--Spawning multiple objects in randoms locations 
local function spawnsmile() 
    local smile = display.newImageRect("Button.png", 45, 45); 
    smile:setReferencePoint(display.CenterReferencePoint); 
    smile.x = math.random(-10, 400); 
    smile.y = -40; 
    transition.to(smile, {time = math.random(2000, 8000), x = math.random(-10, 400) , y = 600,}); 
    physics.addBody(smile, "dynamic", {density = 0.1, bounce = 0.1, friction = .1, radius = 0}); 

    --Adding touch event 
    smile:addEventListener("touch", smile); 
end 

local total_smiles = 15 
tmr = timer.performWithDelay(10000, spawnsmile, total_smiles); 

Кроме того, вы должны хранить ссылки на созданные улыбки для того, чтобы должным образом уничтожить их и не утечка памяти. more info on memory managment

local smiles = {} 
table.insert(smiles, smile) 

и утилизация:

for i=#smiles,1,-1 do 
    smiles[i]:removeSelf() 
    smiles[i] = nil 
end 
0

изменить таймер для выполнения каждые 10000 мс вместо 0. и ваш слушатель функция реально не заполнить какой-либо цели, удалите это и изменить transition.to внутри spawnsmile функции

transition.to(smile, {time = math.random(2000, 8000), x = math.random(-10, 400) , y = 600, onComplete = function(obj) obj:removeSelf() obj = nil end}); 

Это должно делать то, что вы хотите, чтобы оно делало =) Также должно быть значение внутри total_smiles, но я предполагаю, что у вас есть это в другом месте.

+0

в порядке, так что я изменил код, но все это только нерест себя один smile.png –

+0

'локальную функцию spawnsmile() местного смайл = display.newImageRect (" улыбка .png ", 45, 45); smile: setReferencePoint (display.CenterReferencePoint); smile.x = math.random (-10, 400); smile.y = -40; \t \t переход.to (улыбка, {time = math.random (2000, 8000), x = math.random (-10, 400), y = 600, onComplete = function (obj) obj: removeSelf() obj = nil end}); Physics.addBody (улыбка, «динамическая», {плотность = 0,1, отскок = 0,1, трение = .1, radius = 0}); конец tmr = timer.performWithDelay (10000, spawnsmile, total_smiles, 5); ' –

+0

У вас есть какая-либо ценность в total_smiles? последний параметр таймера (tmr) - сколько раз он должен выполняться. Попробуйте присвоить значение 5 total_smiles и посмотрите, что произойдет =) – malmatalla

Смежные вопросы