2014-01-29 3 views
1

У меня есть этот код, чтобы нарисовать линию на экране с помощью display.newCircle. он отлично работает, но , поскольку я рисую больше, он будет более неустойчивым и утечка памяти. Как я могу сохранить эту оптимизацию. Проблема только на устройстве. Здесь кодCorona SDK рисование линий с использованием кругов

local background = display.newRect(0, 0, 480, 800) 

local lines = {}; 
local i = 1; 
local strokeWidth = 20; 
local R = 150; 
local G = 100; 
local B = 50; 

local function drawALine(event) 
    if event.phase == "began" then 
    elseif event.phase == "moved" then 

     lines[i] = display.newCircle(event.x, event.y, strokeWidth, strokeWidth); 
     lines[i]:setFillColor(R,G,B); 

    elseif event.phase == "ended" then 
    end  
end 
Runtime:addEventListener("touch", drawALine) 

Любая помощь?

+0

Что вы подразумеваете под неустойчивым? – Schollii

+0

Это ваш главный.lua? Вы не используете сцены или событие createScene? – Schollii

+0

нет, это не main.lua. Я использую класс режиссера для перехода от сцены к сцене, которую я добавил в группу следующим образом: 'lines [i] = display.newCircle (paintGroup, event.x, event.y, strokeWidth, strokeWidth); 'но это ничего не меняет – Beri

ответ

0

Каждый раз, когда вы касаетесь экрана, вы расширяете свою линию кругов с помощью еще одного круга, но вы не добавляете его в вид сцены, поэтому он не управляется сценой.

+0

Вы имеете в виду добавить к группе? Я добавил в группу следующие строки: [i] = display.newCircle (paintGroup, event.x, event.y, strokeWidth, strokeWidth); 'но это ничего не меняет. – Beri

+0

no, группа просмотра сцены. Вы не используете обратный вызов createScene (event)? – Schollii

+0

Я использую класс режиссера для сцены, а не страусину – Beri

0

Где вы увеличиваете переменную i? Если вы этого не делаете, вы записываете предыдущую запись, но она все еще выделяет память. Вы можете поместить некоторые отпечатки в свой код, чтобы посмотреть, как ваша память становится слишком высокой.

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