Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.04.2007, 23:06
NtM вне форума Посмотреть профиль Отправить личное сообщение для NtM Найти все сообщения от NtM
  № 1  
Ответить с цитированием
NtM

Регистрация: Sep 2006
Адрес: Calgary
Сообщений: 82
Отправить сообщение для NtM с помощью ICQ
По умолчанию плавное перемещение

я нашла интересный алгоритм перемещения и масштабирования картинок в зависимости от расположения мышки (расстояние от координат картинки до координат мыши)

как изменяется масштаб понятно, но как меняется расстояние я совершенно не могу понять, а точнее почему именно так расчитываеются параметры vx и vy

помогите разобраться пожалуйста!

я вкладываю флэшку move_.rar
Вложения
Тип файла: rar move_.rar (5.0 Кб, 127 просмотров)

Старый 03.04.2007, 23:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: 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;
}
vx и vy в начале имеют значения 0.

Старый 03.04.2007, 23:36
NtM вне форума Посмотреть профиль Отправить личное сообщение для NtM Найти все сообщения от NtM
  № 3  
Ответить с цитированием
NtM

Регистрация: Sep 2006
Адрес: Calgary
Сообщений: 82
Отправить сообщение для NtM с помощью ICQ
хорошо, меня интересует конкретно this.vx
в коде
Код:
this._x += (this.x0 + this.vx - this._x) / 10;
this.vx = this.vx * 0.5;

который расчитывается непонятным мне образом в коде
Код:
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;
				}

Старый 04.04.2007, 01:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Что конкретно вам непонятно в коде? То, что берется предыдущее значение vx, vy справа в выражении или что?

Старый 04.04.2007, 02:02
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 5  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
если откуда они вообще взялись, то вот это место, в функции init():
Код:
var mc = _root.attachMovie("img", "img" + d, d, {col:j, row:i, vx:0, vy:0});

Старый 04.04.2007, 02:22
NtM вне форума Посмотреть профиль Отправить личное сообщение для NtM Найти все сообщения от NtM
  № 6  
Ответить с цитированием
NtM

Регистрация: Sep 2006
Адрес: Calgary
Сообщений: 82
Отправить сообщение для NtM с помощью ICQ
нет правила написания кода понятны!
я прошу прощение за неточность

напримет чтобы сделать простое плавное движение объекта от точки до точки можно использовать в onEnterFrame мувика(mc) который мы перемещаем, формулу:
Код:
mc._x += (mc.targetX-mc._x)/mc.speed;
где mc.targetX конечная координата x мувика mc

т.е тут мы берём расстояние между текущим расположением объекта и конечной точкой и сдвигаем объект на десятую часть этого расстояния......т.к. эта десятая чать уменьшается с каждым разом, получаем замедление.....


в примере, о котором я спрашиваю, мы перемещаем объекты
по формуле
Код:
this._x += (this.x0 + this.vx - this._x) / 10;
где this.x0 - начальная координата мувика в "спокойном состоянии"

мне не понятен смысл расчёта параметра vx
т.е. смысл вычисления, что это значит:
Код:
this.vx = this.vx + (newX - this.vx) / 100
почему vx зависит от масштаба, почему делим на 100, почему vx умножаем на 0.5
ну, не хватает меня, чтобы понять, почему так составлена формула

смысл, смысл мне формулы разъясните пожалуйста!


Последний раз редактировалось iNils; 04.04.2007 в 04:11.
Старый 04.04.2007, 14:54
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
this.vx += (newX-this.vx)/100;
Так яснее? Это тоже самое, что вы и описали в первой части своего поста.

Старый 04.04.2007, 20:24
NtM вне форума Посмотреть профиль Отправить личное сообщение для NtM Найти все сообщения от NtM
  № 8  
Ответить с цитированием
NtM

Регистрация: Sep 2006
Адрес: Calgary
Сообщений: 82
Отправить сообщение для NtM с помощью ICQ
вот эта переменная 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.
Старый 04.04.2007, 20:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну тогда изучайте математику, нарисуйте на бумажке, в конце концов.

Старый 04.04.2007, 20:45
NtM вне форума Посмотреть профиль Отправить личное сообщение для NtM Найти все сообщения от NtM
  № 10  
Ответить с цитированием
NtM

Регистрация: Sep 2006
Адрес: Calgary
Сообщений: 82
Отправить сообщение для NtM с помощью ICQ
ну, бумажка не помогла, иначе бы не спрашивала, откровенно говоря

ну, в общем, большое, блин, спасибо )


Последний раз редактировалось NtM; 04.04.2007 в 20:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.