如何在Corona的Lua画一个圆圈?

时间:2011-10-25 13:29:23

标签: lua drawing corona

很久以前我最后一次需要它:)

我很简单,就像创建一个带有细分和不同填充或透明的圆圈。 所以我只是想用秒表填充圆圈(60秒)。

功能类型> showsegment(xcircle,ycircle,radius,seconds):} @

任何导致该解决方案的短线都是受欢迎的。 该代码需要在Lua的Corona框架内工作。

2 个答案:

答案 0 :(得分:0)

我认为你不能。使用带alpha和色调的图像不是一种选择? 是的,您必须创建60个对象,每个刻度一个,但无论如何都要缓存图像,因此您只需加载它并为其分配一次内存。每个下一个实例都很便宜。

答案 1 :(得分:0)

我不确定这是否是您正在寻找的,但是看到这个问题让我很好奇,所以我搞砸了它并想出了这个(如果它是您正在寻找的):     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);
编辑:我稍微清理了一下代码。