Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #27, ФЕВРАЛЬ 2003 г.

TIPS OF FLASH: взмылим веревку!

Iv (dembicki@narod.ru)

Спецвыпуск Xakep, номер #027, стр. 027-104-4


Поэтому поступим так: первой точкой всегда будет стартовая кнопка, что соответствует узловой точке 1 на рисунке. Следующий за стартовой точкой мувик в массиве, а именно arrMC[1], будет контрольной точкой безье, что соответствует точке 2 на рисунке. Третью точку мы вычислим, она будет посередине между arrMC[1] и arrMC[2]. В следующем проходе цикла третья точка станет первой, второй точкой станет arrMC[2], и третью точку мы опять вычислим как среднее арифметическое контрольных точек. И так последовательно просчитаем всю веревку.

Вот как это выглядит:

p.clr = 0xFF0000;

p.onEnterFrame = function() {

for (var i = 1; i<this.arrMC.length-1; i++) {

this.update.apply(this.arrMC[i], [this.arrMC[i-1], this.arrMC[i+1], this.damp]);

}

this.clear();

this.lineStyle(5, this.clr, 100);

this.moveTo(this.arrMC[0]._x, this.arrMC[0]._y);

for (var i = 1; i<this.arrMC.length-1; i++) {

var cx = (this.arrMC[i]._x+this.arrMC[i+1]._x)/2;

var cy = (this.arrMC[i]._y+this.arrMC[i+1]._y)/2;

this.curveTo(this.arrMC[i]._x, this.arrMC[i]._y, cx, cy);

}

this.lineTo(this.arrMC[i]._x, this.arrMC[i]._y);

};

Тестим и видим, что это победа! Веревка ведет себя так, как живая. Обрати внимание на то, что мы также вынесли цвет веревки в отдельную переменную класса. Если хочешь, можешь убрать рисование крестиков в инициализации класса.

Юзать нашу веревку вообще просто. Значения веса, количества узловых точек цвета и затухания у нас сидят в прототипе класса. Смело меняй их как хочешь. Например, так:

_root.attachMovie("cord", "cord1", 1, {num:5, damp:0.87, weight:5, clr:0xFF00FF});

Если у тебя что-то не получится, то пиши или сходи на http://dembicki@narod.ru/tutor/cord.html

Назад на стр. 027-104-3  Содержание