На основе кода господина
etc (спасибо ему больше) публикую код улучшенной веревки, с затухающим колебанием, лимитированным фактором растяжения, с подвешиванием на конце груза и фиксированной точкой привязки верхнего конца.
Груз выполнен в виде мувиклипа на сцене.
Я создаю сразу 8 веревок, с немного различающимеся параметрами, чтобы не одинаково "жили"

Код AS1/AS2:
//функция выборки случайного числа из диапазона
function Range (min:Number, max:Number):Number
{
var randomNum:Number = Math.floor (Math.random () * (max - min + 1)) + min;
return randomNum;
}
//создаю контейнеры для 8 линий, привязываю к каждой веревке груз
for (i = 1; i <= 8; i++)
{
this.createEmptyMovieClip ("line" + i,_root.getNextHighestDepth ());
_root["line" + i].letter = _root["letter_" + i];
}
//инициализация веревки
this.init = function (num, len, X, line, t)
{
line.len = len;
line.wind = 0;
//таймер для колебаний
line.t = t;
//мультипликатор для затухания
line.multi = 1;
line.point = [];
for (var i = 0; i < num; i++)
{
var t = new Object ();
t.x = X;
//помещаем все точки веревки вверх, чтобы веревка "упала"
t.y = -200;
line.point.push (t);
}
};
//собственно "жизнь" веревки
for (j = 1; j <= 8; j++)
{
this["line" + j].onEnterFrame = function ()
{
this.t += 0.1;
//затухания
this.multi *= 0.99;
this.gravity = 20 + this.t;
this.wind = Math.sin (this.t) * 6 * this.multi;
//помещаем верхний конец в нужный "гвоздик" и фиксируем
this.point[0].y = 0;
this.clear ();
this.lineStyle (0,0xD7E1EB,100);
this.moveTo (this.point[0].x,this.point[0].y);
for (var i = 1, len = this.point.length; i < len; i++)
{
//[x1,y1] и [x2,y2] - координаты предыдущей и текущей точки соответственно
var x1 = this.point[i - 1].x, y1 = this.point[i - 1].y;
var x2 = this.point[i].x, y2 = this.point[i].y;
// xd и yd - разница расстояний между точками
var xd = x2 - x1 + this.wind;
var yd = y2 - y1 + this.gravity;
//dist - расстояние между точками
var dist = Math.sqrt (xd * xd + yd * yd);
//коррекция расстояния между точками до требуемого (через подобие)
this.point[i].x = x1 + (xd * (Math.cos (this.t * 1.3) * 1 * this.multi + this.len)) / dist;
this.point[i].y = y1 + (yd * (Math.sin (this.t * 1.3) * 1 * this.multi + this.len)) / dist;
this.lineTo (this.point[i].x,this.point[i].y);
}
//перемещаем груз к последней точке
this.letter._x = this.point[this.point.length - 1].x;
this.letter._y = this.point[this.point.length - 1].y;
};
}