![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
|
а я короче ветер вертикальный добавил, ваще, вещь, а еще его можно рнд сделать, ваще класс...но нитка реально улетная, правда двоится (( в глазах у меня )))
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
gravity и есть "вертикальный ветер"
|
|
|||||
|
Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
|
хм, я думал это сила тяжести
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Она же сила тяжести
|
|
|||||
|
Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
|
вот вот все верно, так что я круто сделал, сила тяжести постоянная, а ветер вертикальный рнд сделал )))
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 1
|
На основе кода господина etc (спасибо ему больше) публикую код улучшенной веревки, с затухающим колебанием, лимитированным фактором растяжения, с подвешиванием на конце груза и фиксированной точкой привязки верхнего конца.
Груз выполнен в виде мувиклипа на сцене. Я создаю сразу 8 веревок, с немного различающимеся параметрами, чтобы не одинаково "жили" //функция выборки случайного числа из диапазона 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; }; } |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
23dgod: ничего нету. Функция init нигде не вызывается.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:55. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|