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 |