PDA

Просмотр полной версии : Программное рисование


nOobCrafter
09.02.2009, 18:54
Задача, плавно нарисовать Н-цать линий, одна за другой. Пытаюсь это сделать вот так:
var i:Number = 1;

function createLine()
{
if (i < 12)
{
var control = this.attachMovie("control_mc", "c"+i+"_mc", i);
var number = this.attachMovie("num", "num" + i, i + 100);

number.num.text = i;
number._x = control._x = Math.random() * 800;
number._y = control._y = Math.random() * 800;
this.next_x = this["c" + i + "_mc"]._x;
this.next_y = this["c" + i + "_mc"]._y;
this.this_x = this["c" + (i - 1) + "_mc"]._x;
this.this_y = this["c" + (i - 1) + "_mc"]._y;
control.onRelease = function()
{
trace(this)
}

this.createEmptyMovieClip("line"+i, 20 + i);
if (this.nextPoint_x == underfined)
{
this.nextPoint_x = this["c" + (i - 1) + "_mc"]._x;
this.nextPoint_y = this["c" + (i - 1) + "_mc"]._y;
this.lineStyle(2, 0x000000, 100);
}
this.moveTo(this["c" + (i - 1) + "_mc"]._x, this["c" + (i - 1) + "_mc"]._y);
this.onEnterFrame = lineMover;
}
}

// функция для onEnterFrame линии
function lineMover()
{
this.lineTo(this.nextPoint_x, this.nextPoint_y);
this.nextPoint_x += (this.next_x - this.this_x) / 200; // вот тут вычисляем на сколько мы рисуем линию за кадр
this.nextPoint_y += (this.next_y - this.this_y) / 200; //

if ((this.next_x - this.this_x) > 0)
{
if (this.nextPoint_x > this.next_x) // когда мы дорисовали до конечной точки, то прекращаем рисование, умеличиваем счетчик и распологаем новую точку и рисуем к ней линию
{
delete this.onEnterFrame;
i++
createLine()
}
} else {
if (this.nextPoint_x < this.next_x) // когда мы дорисовали до конечной точки, то прекращаем рисование, умеличиваем счетчик и распологаем новую точку и рисуем к ней линию
{
delete this.onEnterFrame;
i++
createLine()
}
}
}

createLine()
Проблема в том что имеем непонятную погрешность (отклонении нарисованной линии от конечной точки) причем чем больше величина на которую рисуется линия тем больше погрешность, такое чувство что каждый раз рисуется один лишнй кусочек.
З.Ы. начинается с 1, потому что начальная точка 0, уже лежит на сцене и имеет заданные координаты.

qazwsx
09.02.2009, 19:05
А зачем вообще все это: "если х начальной точки больше чем х конечной (конечная точка находится позыди начальной
// то по идее координаты мы должны отнимать"? Если задача нарисрвать линии последовательно по точкам?

nOobCrafter
09.02.2009, 19:20
извиняюсь, с этим только что разобрался и не успел изменить..(( Тперь проблема с погрешностью.((

qazwsx
09.02.2009, 19:44
Я не понимаю какой смысл делать именно так? Можно сделать все проще

nOobCrafter
10.02.2009, 10:48
Если можно приведи пример, это я делаю для саморазвития, вот и возникают вопросы..