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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.07.2007, 13:56
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 11  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
не осталось или ..?

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

Регистрация: Sep 2002
Сообщений: 30,787
Просто не хочу этим заниматься, извините.

Старый 17.07.2007, 14:04
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 13  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
да я как бы сам) от вас только прошу код если не жалко. потом выложу что получилось

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

Регистрация: Sep 2002
Сообщений: 30,787
Честно говоря, я не знаю, где лежат исходники. Тем более, я на работе.
Вообще говоря, там какой-то ужас с физикой, поэтому лучше сделать на трезвую голову самостоятельно.

Старый 18.07.2007, 00:27
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 15  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от __etc
Это просто потому что ты её в центре хватаешь. А в центре у неё центр тяжести, я не сделал мертвую зону…
Не в центре, а с краю, и точкой вращения при движении должна быть точка в которую я ткнул мышью, а у тебя она вращается относительно центра фото + мышь сползает с точки захвата.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Sep 2002
Сообщений: 30,787
Гы, а у меня не сползает
Да я особо и не стремился сделать реальную физику, главное эффект получить, а ньюансы не каждый заметит

Старый 18.07.2007, 16:40
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 17  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
помурыжил алгорит, сделал. всё-таки беда была из-за непоняток с осями. неправильные декартовые они) и поврот теперь относительно точки захвата что из-за всяких погрешностей она оставалась реально там же, где и курсор.

вот пример http://inreflected.com/fljot/test/#gallery_id=085
дальш всякие инерции можно приделывать, мне вроде не надо

код функции, отвечающей за таскание:
Код:
function phys_drag() {
	hold_x = _root._xmouse; //координата x точки захвата
	hold_y = _root._ymouse; //координата y точки захвата
	
	this.onMouseMove = function() {
		
		//коориднаты центра объекта
		center = {_x: this._x, _y: this._y};

		//точка захвата: _root._xmouse, _root._ymouse
		
		//координаты цетра тяжести
		rotation_center = {_x: 2*center._x - _root._xmouse, _y: 2*center._y - _root._ymouse};
		
		//удаление от центра фоты (относительно 1/2 диагонали)
		d_from_center = Math.sqrt(((Math.pow((_root._xmouse - center._x),2) + Math.pow((_root._ymouse - center._y),2))) / _global.diagonal_length);
		
		//коэф поворота
		K_rotation = Math.pow(d_from_center, 2); 
				
		//смещение мыши(=точки захвата) в абс СК (система координат)
		_global.hold_dx = _root._xmouse - hold_x; _global.hold_dy = _root._ymouse - hold_y;
		
		//вектор локальной оси X (в абс координатах)
		loc_Xaxis_x = hold_x - center._x;	loc_Xaxis_y = hold_y - center._y;
		
				
		//определяем угол между абс СК и локальной СК. через скалярное произведение [1,0](=ось X) и локальной оси x
		cos_fi = loc_Xaxis_x/(Math.sqrt(loc_Xaxis_x*loc_Xaxis_x + loc_Xaxis_y*loc_Xaxis_y));
		fi = Math.acos(cos_fi);
		if (loc_Xaxis_y > 0) fi = - fi; //от -pi до pi
		
		//вычисляем относительное смешение вдоль локальных осей(в локальной СК)
		//т.е. переводим смещение  hold_dx и  hold_dy в локальную СК
		loc_dx = hold_dx*Math.cos(fi) - hold_dy*Math.sin(fi); //смещение по x в локальной
		loc_dy = hold_dx*Math.sin(fi) + hold_dy*Math.cos(fi); //смещение по y в локальной
		
						
		//вычисляем угол поворта. из прямоугольного треугольника,
		//противоположный нужному углу катет - это вектор смещения курсора в проекции на локальную ось Y
		//прилегающий катет - расстояние от точки захвата до центра тяжести  
		//С УЧЁТОМ КОЭФ ПОВОРОТА
		rel_dy_x = loc_dy*Math.sin(fi); //x-компонента проекции вектора смещения на локальную ось Y
		rel_dy_x_rot = rel_dy_x*K_rotation;  //x-компонента проекции вектора смещения на локальную ось Y С УЧЁТОМ КОЭФ ПОВОРОТА
		rel_dy_y = loc_dy*Math.cos(fi);   //y-компонента проекции вектора смещения на локальную ось Y
		rel_dy_y_rot = rel_dy_y*K_rotation; //y-компонента проекции вектора смещения на локальную ось Y С УЧЁТОМ КОЭФ ПОВОРОТА
		tan_psi = Math.sqrt(Math.pow(rel_dy_x_rot,2) + Math.pow(rel_dy_y_rot,2))/(2*Math.sqrt(Math.pow(loc_Xaxis_x,2) + Math.pow(loc_Xaxis_y,2)));
		psi = Math.atan(tan_psi);
		if (loc_dy < 0) psi = -psi;
				
		//поворачиваем на угол. вращение вокруг точки захвата
		this.rotation(psi, this._parent._xmouse, this._parent._ymouse);
		
		//вычисляем как надо сместить центр(переводим смещение в абс СК)
		//сместить его надо на смещение вдоль локальной оси X и на остаток от смещения вдоль локальной Y (из-за коэф поворота)
		//смещаем центр
		//fi = 2*Math.PI - fi;
		this._x += _global.hold_dx;
		this._y += _global.hold_dy;
		
		//записываем новые координаты мыши для вычисления
		//вектора смещения в следующей ветви
		hold_x = _root._xmouse;
		hold_y = _root._ymouse;
		
		updateAfterEvent();
		
	}
}


Последний раз редактировалось fljot; 18.07.2007 в 16:48.
Старый 18.07.2007, 16:51
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 18  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А функциональная нагрузка сего действа какая?

Старый 18.07.2007, 16:59
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 19  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
1) люди любят вертеть фоты по-своему
2) создавать атмосферу чего-то реального, лежащего на плоскости моника

наверное так

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

Регистрация: Sep 2002
Сообщений: 30,787
Тогда где тень от фотографии на «столе»?

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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