我该如何在Corona中使用Lua绘制一个圆的一部分?

很久以前是我最后一次需要那个 :)

我只想简单地创建一个带有不同填充或透明度的部分的圆。 所以我只需要像秒表一样通过时间(60秒)填充圆。

函数类型 > showsegment(xcircle,ycircle,半径,秒数):}@

任何通向该解决方案的简短线路都受到欢迎。 代码需要在Lua的Corona框架中工作。

原文链接 https://stackoverflow.com/questions/7890021

点赞
stackoverflow用户67878
stackoverflow用户67878
我认为你不能这样做。使用带有透明度和着色的图像不是一个选项吗?
是的,你需要创建60个对象,每个对象都对应一个刻度,但是图像会被缓存,所以你只需要加载它一次并分配内存。随后的每个实例都很便宜。
2011-11-03 08:16:37
stackoverflow用户3362639
stackoverflow用户3362639

我不能确定这是否是你要找的,但是看到这个问题让我很好奇,所以我试着摆弄了一下它,发现了这个代码(如果是你要找的话):

tick = 0;
ticks = {};

cr = 250; -- 圆半径
hr = 0.9; -- 指针半径
hw = 10; -- 指针宽度
mr = 0.25; -- 中间半径(fg)

bg = display.newCircle(cr, cr, cr); -- 背景
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);

编辑:我对代码进行了一些清理。

2014-10-26 00:47:07