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

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

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

Регистрация: Aug 2006
Сообщений: 134
По умолчанию Дополнительное усилие при ускорении

Добрый день, флэшеры.

Я тут делаю такую штуку. Суть в том, что когда проводишь мышью по области вокруг крестика, он вращается. И чем бьыстрее проводишь, тем быстрее он вращается. Проблема в том, что скорость вращения напрямую зависит от скорости движения указателя, но я бы хотел сделать начальную скорость вращения креста быстрее раза в два-три, чем движение мыши. Простое умножение на определенную величину(rotMultiply) дает очень странный эффект "запаздывания" или вообще не влияет на скорость вращения. Без умножения все работает нормлаьно, но скрость мала.
Вот ссылка на мувик нормальный: www.ambuddy.net/use/cross_normal.swf
Вот ссылка на мувик паранормальный: www.ambuddy.net/use/cross_paranormal.swf

Вот код:
Код:
// Дополнительное усилие
rotMultiply = 5;
// Скорость затухания
rotDecay = 0.95;
// Указатель в зоне воздействия
//isOver = false;

mouseX1 = _xmouse;

// Вращаем крестик
aCross.onEnterFrame = rotateFunc;

// Если мышь задела область влияния запускаем поворот, т.е. начинаем считать поворот
aCross.onMouseMove = ifInvolved; 


// ======================
// Functions
// ======================
function ifInvolved() {
	if(isOver==false && _xmouse > this._x-50  && _xmouse < this._x+50 && _ymouse > this._y-50  && _ymouse < this._y+50) {
					
		mouseOffset = mouseX1 - _xmouse; // считаем относительно пред. значения
		mouseX1 = _xmouse;  // запоминаем предыдущее значение		
		
		rotOffset = mouseOffset;

		rotOffset = rotOffset*rotMultiply;	

	}
}

function rotateFunc() {	
	rotOffset = rotOffset * rotDecay;
	this._rotation += rotOffset;
	
	// Если угол поворота уже слишком мал, останавливаем
	if(Math.abs(rotOffset)<=1) {
		rotOffset = 0;		
		this._rotation = Math.ceil(this._rotation);
		
		// Если крест не встал прямо, докручиваем его
		rAngle = Math.abs(this._rotation);
		if(rAngle > 360) rAngle = rAngle - Math.floor(rAngle/360)*360; // убираем целое число оборотов
		if(rAngle != 0 && rAngle != 90 && rAngle != 180 && rAngle != 270 && rAngle != 360) {
			this._rotation = (mouseOffset>0) ? this._rotation+1 : this._rotation-1; // вперед или назад
		}		
	} 

}


Последний раз редактировалось ambuddy; 09.04.2007 в 17:46.
Старый 09.04.2007, 17:54
vapes вне форума Посмотреть профиль Отправить личное сообщение для vapes Найти все сообщения от vapes
  № 2  
Ответить с цитированием
vapes
 
Аватар для vapes

блогер
Регистрация: Nov 2006
Адрес: Минск
Сообщений: 370
Записей в блоге: 6
Отправить сообщение для vapes с помощью ICQ Отправить сообщение для vapes с помощью Skype™
А здаешь почему кажется, будто колеса у машины движутся назд, когда она быстро едет?

Старый 09.04.2007, 19:47
ambuddy вне форума Посмотреть профиль Отправить личное сообщение для ambuddy Найти все сообщения от ambuddy
  № 3  
Ответить с цитированием
ambuddy
 
Аватар для ambuddy

Регистрация: Aug 2006
Сообщений: 134
нууу, очень часто замечал, но физику этого обмана не знаю...
Т.е. хочешь сказать, крест все-таки крутится быстрее и при этом так как надо, просто я этого не замечаю?

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ambuddy
нууу, очень часто замечал, но физику этого обмана не знаю...
В школе рассказывали.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от ambuddy
нууу, очень часто замечал, но физику этого обмана не знаю...
Т.е. хочешь сказать, крест все-таки крутится быстрее и при этом так как надо, просто я этого не замечаю?
Визуально будет казаться, что объект крутится в противоположную сторону относительно направления вращения, когда модуль угла поворота за единицу времени больше 180 градусов и меньше 360. Это для дискретного угла поворота (например во флеше). В жизни происходит тоже самое, хотя поворот и "аналоговый", наш мозг воспринимает все с конечной скорость и поэтому мы видим опять же все дискретно.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 09.04.2007, 20:57
techno вне форума Посмотреть профиль Отправить личное сообщение для techno Найти все сообщения от techno
  № 6  
Ответить с цитированием
techno
 
Аватар для techno

Регистрация: Jan 2007
Адрес: nnov
Сообщений: 163
Отправить сообщение для techno с помощью ICQ Отправить сообщение для techno с помощью AIM Отправить сообщение для techno с помощью MSN Отправить сообщение для techno с помощью Yahoo
Цитата:
Сообщение от iNils
Визуально будет казаться, что объект крутится в противоположную сторону относительно направления вращения, когда модуль угла поворота за единицу времени больше 180 градусов и меньше 360.
Это если в крестике одна палочка
а так то их четыре, так что 45-90 градусов

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от techno
Это если в крестике одна палочка
а так то их четыре, так что 45-90 градусов
Давайте перечислим все варианты от 1 до бесконечности.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 09.04.2007, 21:49
ambuddy вне форума Посмотреть профиль Отправить личное сообщение для ambuddy Найти все сообщения от ambuddy
  № 8  
Ответить с цитированием
ambuddy
 
Аватар для ambuddy

Регистрация: Aug 2006
Сообщений: 134
Хорошо.

Но почему, когда двигаешь мышкой медленно, то скорость вращения и в первом и во втором случае почти одинакова, хотя должна разниться в пять раз??!!

Старый 09.04.2007, 21:55
techno вне форума Посмотреть профиль Отправить личное сообщение для techno Найти все сообщения от techno
  № 9  
Ответить с цитированием
techno
 
Аватар для techno

Регистрация: Jan 2007
Адрес: nnov
Сообщений: 163
Отправить сообщение для techno с помощью ICQ Отправить сообщение для techno с помощью AIM Отправить сообщение для techno с помощью MSN Отправить сообщение для techno с помощью Yahoo
лично я бы сделал так:
Код:
rotOffset = Math.max(mouseOffset,rotOffset);
Если есть сомнения протестируй - поставь 50, например, по-моему все в порядке.


Последний раз редактировалось techno; 09.04.2007 в 21:58.
Старый 10.04.2007, 16:31
vapes вне форума Посмотреть профиль Отправить личное сообщение для vapes Найти все сообщения от vapes
  № 10  
Ответить с цитированием
vapes
 
Аватар для vapes

блогер
Регистрация: Nov 2006
Адрес: Минск
Сообщений: 370
Записей в блоге: 6
Отправить сообщение для vapes с помощью ICQ Отправить сообщение для vapes с помощью Skype™
еще совет нарисуй что-нибудь не со спицами, или неповторяющиеся предметы , и посмотри

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

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

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


 


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


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