Mnilionic
14.08.2010, 15:05
Помогите программно нарисовать прямоугольник с скруглёным углами.
С анкорами коекак разобрался методом подбора, а с контролами не получается.
вот что вышло:
function rad(deg) {
return Math.PI / 180 * deg;
}
var mc = this.createEmptyMovieClip('mc', 5);
mc._x = 10
mc._y = 10
mc.lineStyle(1, 0x000000, 100);
//
// прорисовываем друг за другом сторону -> угол
function drawRoundRec(w, h, r){
mc.moveTo(w-r, h);
drawConer(r, 0, w-r, h-r);
mc.lineTo(w, r);
drawConer(r, 90, w-r, r);
mc.lineTo(r, 0);
drawConer(r, 180, r, r);
mc.lineTo(0, h-r);
drawConer(r, 270, r, h-r);
mc.lineTo(w-r, h);
}
function drawConer(r, a, x, y){
var count = 3; // кол-во кривых на угол
var step = rad(90 / count);
var step1 = rad(a); // сектор
for( var i = 0; i < count; i++){
step1 += step;
x1 = r * Math.sin(step1);
y1 = r * Math.cos(step1);
cx = x;
cy = y;
mc.curveTo(cx ,cy, x1+x , y1+y);
}
}
drawRoundRec(600, 400, 30);
тригонометрия у меня очень хромает.
Может что-то готовое есть?
спасибо
С анкорами коекак разобрался методом подбора, а с контролами не получается.
вот что вышло:
function rad(deg) {
return Math.PI / 180 * deg;
}
var mc = this.createEmptyMovieClip('mc', 5);
mc._x = 10
mc._y = 10
mc.lineStyle(1, 0x000000, 100);
//
// прорисовываем друг за другом сторону -> угол
function drawRoundRec(w, h, r){
mc.moveTo(w-r, h);
drawConer(r, 0, w-r, h-r);
mc.lineTo(w, r);
drawConer(r, 90, w-r, r);
mc.lineTo(r, 0);
drawConer(r, 180, r, r);
mc.lineTo(0, h-r);
drawConer(r, 270, r, h-r);
mc.lineTo(w-r, h);
}
function drawConer(r, a, x, y){
var count = 3; // кол-во кривых на угол
var step = rad(90 / count);
var step1 = rad(a); // сектор
for( var i = 0; i < count; i++){
step1 += step;
x1 = r * Math.sin(step1);
y1 = r * Math.cos(step1);
cx = x;
cy = y;
mc.curveTo(cx ,cy, x1+x , y1+y);
}
}
drawRoundRec(600, 400, 30);
тригонометрия у меня очень хромает.
Может что-то готовое есть?
спасибо