2015-05-29 6 views
0

У меня возникли проблемы даже с выяснением, с чего начать. Любая помощь будет высоко оценен!Как рисовать круг, поэтапно, чтобы создать эффект анимированной заливки (используя Corona)

Использование Corona SDK Я хочу нарисовать круг, который будет медленно заполняться с увеличением процента.

Эффект заполнения будет следовать по кругу круга, проходя против часовой стрелки, пока весь круг/область не будет полностью заполнен другим цветом.

Спасибо!

+1

У вас даже есть все, что вы пробовали? Вы на самом деле получили сам круг рисования/работы? Нам нужно знать, что вы пробовали и что не работает. Такие случаи часто выглядят неблагоприятно, потому что никто не хочет делать всю работу за вас. – Josh

+0

«Мне трудно понять, с чего начать». кажется довольно законным предшественником того, чтобы не иметь прототипа, чтобы опираться на его вопрос. Это один из тех случаев, когда лучше просто оставить вопрос, пока кто-то, кто действительно понимает SDK Corona, может прослушивать и оказывать некоторую помощь, и, возможно, отредактировать этот вопрос, пока он не станет ценным ресурсом Lua + Corona для всех, кто ищет делать то же самое. (Который, как ни странно, я был, когда я приземлился здесь!) –

ответ

1

This sample from caronalabs.com forums показывает, как можно нарисовать дугу, которая обеспечивает дискретный алгоритм вам нужно будет делать то, что вы спрашиваете:

function display.newArc(group, x,y,w,h,s,e,rot) 
    local theArc = display.newGroup() 

    local xc,yc,xt,yt,cos,sin = 0,0,0,0,math.cos,math.sin --w/2,h/2,0,0,math.cos,math.sin 
    s,e = s or 0, e or 360 
    s,e = math.rad(s),math.rad(e) 
    w,h = w/2,h/2 
    local l = display.newLine(0,0,0,0) 
    l:setColor(54, 251, 9) 
    l.width = 4 

    theArc:insert(l) 

    for t=s,e,0.02 do 
     local cx,cy = xc + w*cos(t), yc - h*sin(t) 
     l:append(cx,cy) 
    end 

    group:insert(theArc) 

    -- Center, Rotate, then translate  
    theArc.x,theArc.y = 0,0 
    theArc.rotation = rot 
    theArc.x,theArc.y = x,y 

    return theArc 
end 

function display.newEllipse(group, x, y, w, h, rot) 
    return newArc(group, x, y, w, h, nil, nil, rot) 
end 

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

Отказ от ответственности: я не тестировал этот код, вам, скорее всего, придется его модифицировать, но с первого взгляда математика выглядит правильно.

HTH!

+0

Жаль, что я не поблагодарил вас раньше. Это отлично сработало для того, чего я хотел, спасибо! –

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

  • Нет связанных вопросов^_^