#lua #drawing #coronasdk
#lua #рисование #coronasdk
Вопрос:
давным-давно мне это было нужно в последний раз 🙂
Я просто хотел бы создать круг с сегментом и другим заполнением или прозрачным. Итак, у меня просто есть секундомер, заполняющий круг по времени (60 секунд).
вид функции a> showsegment (xcircle, ycircle, радиус, секунды) :}@
любые короткие строки, ведущие к этому решению, приветствуются. Код должен работать в рамках Corona, в Lua.
Ответ №1:
Я не думаю, что вы сможете. Использование изображения с альфа и оттенком не вариант? Да, вам придется создать 60 объектов, по одному на каждый тик, но изображения все равно кэшируются, поэтому вы загружаете их и выделяете память для них только один раз. Каждый следующий экземпляр стоит дешево.
Ответ №2:
Я не уверен, что это то, что вы ищете, но, увидев вопрос, мне стало любопытно, поэтому я повозился с ним и понял это (если это то, что вы ищете): tick = 0; ticks = {};
cr = 250; -- Circle radius
hr = 0.9; -- hand radius
hw = 10; -- hand width
mr = 0.25; -- middle radius (fg)
bg = display.newCircle(cr, cr, cr); -- background
for i=1,360 do
local w = hr * (cr * 2);
local x = (w/2) (((cr*2) - w)/2);
local t = display.newRect(x,x,hw,w);
t:rotate(i-1);
t:setFillColor(0,0, 0);
table.insert(ticks, t);
end
function drawTick(e)
print("tick "..tick);
local dg = display.newGroup();
local w = hr * (cr * 2);
local x = (w/2) (((cr*2) - w)/2);
local t = display.newRect(dg, 0, -w/4, 10, w/2);
dg.x = x;
dg.y = x;
t:setFillColor(0, 1, 0);
dg:rotate(tick-1);
table.insert(ticks, t);
fg = display.newCircle(cr,cr,mr*cr);
if tick < 361 then
tick = tick 1
timer.performWithDelay(50, drawTick);
end
end
timer.performWithDelay(0, drawTick);
РЕДАКТИРОВАТЬ: я немного почистил код.