![]() |
|
||||||||||
|
|||||
|
я нашла интересный алгоритм перемещения и масштабирования картинок в зависимости от расположения мышки (расстояние от координат картинки до координат мыши)
как изменяется масштаб понятно, но как меняется расстояние я совершенно не могу понять, а точнее почему именно так расчитываеются параметры vx и vy помогите разобраться пожалуйста! я вкладываю флэшку move_.rar |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Собственно,
MovieClip.prototype.changeScaleAndCoord = function()
{
var dx = this._x - _root._xmouse;
var dy = this._y - _root._ymouse;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < minDist) this.newScale = minDist - dist; else this.newScale = scale0;
//изменение масштаба
this._xscale = this._yscale = this._yscale + (this.newScale - this._yscale) / 10;
//изменение координат
if (this.newScale != scale0) _root.moveImg(this.col, this.row, this.newScale * 30);
this._x += (this.x0 + this.vx - this._x) / 10;
this._y += (this.y0 + this.vy - this._y) / 10;
this.vx = this.vx * 0.5;
this.vy = this.vy * 0.5;
}
|
|
|||||
|
хорошо, меня интересует конкретно this.vx
в коде который расчитывается непонятным мне образом в коде MovieClip.prototype.onNewCoordParam = function (c, r, sc)
{
var _col = this.col;
var _row = this.row;
var newX = 0;
var newY = 0;
if (!(_col != c || _row != r)) return;
if (_col > c) newX = sc;
else
if (_col < c) newX = -sc;
else newX = 0;
if (_row > r) newY = sc;
else
if (_row < r) newY = -sc;
else newY = 0;
this.vy = this.vy + (newY - this.vy) / 100;
this.vx = this.vx + (newX - this.vx) / 100;
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Что конкретно вам непонятно в коде? То, что берется предыдущее значение vx, vy справа в выражении или что?
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
если откуда они вообще взялись, то вот это место, в функции init():
|
|
|||||
|
нет
правила написания кода понятны!я прошу прощение за неточность напримет чтобы сделать простое плавное движение объекта от точки до точки можно использовать в onEnterFrame мувика(mc) который мы перемещаем, формулу: где mc.targetX конечная координата x мувика mc т.е тут мы берём расстояние между текущим расположением объекта и конечной точкой и сдвигаем объект на десятую часть этого расстояния......т.к. эта десятая чать уменьшается с каждым разом, получаем замедление..... в примере, о котором я спрашиваю, мы перемещаем объекты по формуле где this.x0 - начальная координата мувика в "спокойном состоянии" мне не понятен смысл расчёта параметра vx т.е. смысл вычисления, что это значит: почему vx зависит от масштаба, почему делим на 100, почему vx умножаем на 0.5 ну, не хватает меня, чтобы понять, почему так составлена формула смысл, смысл мне формулы разъясните пожалуйста! Последний раз редактировалось iNils; 04.04.2007 в 04:11. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Так яснее? Это тоже самое, что вы и описали в первой части своего поста.
|
|
|||||
|
вот эта переменная this.vx (которая в формуле this._x += (this.x0 + this.vx - this._x) / 10) для каждого мува - это расстояние, на которое нужно переместить этот мувик по координате x
И расчитывается оно (this.vx) как сумма vx(по формуле this.vx += (newX-this.vx)/100) (слагаемых столько, сколько остальных мувиков), которые расчитываются в зависимости от масштаба остальных мувиков моя несчастная голова этого не догоняет, я расчитывала, что мне хоть кто-нибудь по-человечески растолкует это без наводящих вопросов и намёков. Последний раз редактировалось NtM; 04.04.2007 в 20:43. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну тогда изучайте математику, нарисуйте на бумажке, в конце концов.
|
|
|||||
|
ну, бумажка не помогла, иначе бы не спрашивала, откровенно говоря
ну, в общем, большое, блин, спасибо ) Последний раз редактировалось NtM; 04.04.2007 в 20:57. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|