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

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

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

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
По умолчанию Имитация 3д поворота "прямоугольника", реагирующая на мышь. Идет рывками.

У меня есть прямоугольник, в нем меняются твинами rotationX и rotationY по евенту MOUSE_MOVE, привязанному к stage.
Вот код, который выполняется:

Код AS3:
			var rotateX:Tween = new Tween(this,"rotationX",Regular.easeOut,this.rotationX,percentY * 40,23);
			var rotateY:Tween = new Tween(this,"rotationY",Regular.easeOut,this.rotationY, -  percentX * 40,23);
После изучения и небольшого понимания принципа скроллера, недолго думая, я накидал код, который будет плавно по чуть-чуть двигать объект, словно он поворачивает "лицо" на мышку.
40 в этом коде символизирует насколько сильно будет идти поворот.
Все идет гладко для моей сцены 500 на 400 пикселей. Разверни же флешку на весь экран или на сайте сделать ее большой и двинь мышкой дальше этих "безопастных" 500 на 400 пикселей, как ее начинает некисло так колбасить (не мышку, эээ точнее его, прямоугольник начинает колбасить).
Конечно проблема еще связанная с твинами, что я создаю сотни твинов благодаря этому коду, которые без своей ссылки каждый сидят и умирают или где-то там в GC находятся спустя минуту движения мышкой.

Определенных глюков это не дает, но все равно. Думаю, не проще ли движение делать с помощью одного ENTER_FRAME, который просто для плавности будет уменьшать скорость при приближении к разнице его_поворот и процентное_положение_мыши_на_сцене.

Не факт, что это "колбас", кстати, вылечит. Почему так происходит не знаю.
Кстати, вполне возможно мой код неправильный, вычисления процента мышки на сцене и передача на твин поворота.

Только что провел пару тестов, судя по всему, как только percentY или percentX становятся больше 0.6, rotation-ы сходят с ума из-за скорости и количества поворотов, которые им надо сделать, благодаря умножению percent-ов на 40.

Пробовал даже с уменьшением скорости при увеличении процентов.
Вот код, как ни странно, fuck! выдается, а вот движение продолжается.

Код AS3:
			var percentY:Number = mouseX / stage.stageWidth;
			var percentX:Number = mouseY / stage.stageHeight;
			var speedX:Number = 60-(percentX*100);
			var speedY:Number = 60-(percentY*100);
			if (speedX > 0)
			{
				var rotateX:Tween = new Tween(this,"rotationX",Regular.easeOut,this.rotationX,percentX * speedX,23);
			}else {
				trace("fuck!");
			}
			if (speedY > 0)
			{
				var rotateY:Tween = new Tween(this,"rotationY",Regular.easeOut,this.rotationY, -  percentY * speedY,23);
			}
Вы сами можете опробовать, кстати, создав функцию что играет с любым объектом на MOUSE_MOVE.

Добавлено через 13 часов 10 минут
Сделал еще пару тестов, обнаружил проблемы в mouseX и mouseY.
Вот выхлоп. Очень странные значения показывает mouseX если ее придвинуть к дальнему углу сцены.
Скачат эти значения, словно рандомные.

Цитата:
Происходит это: mouseX=646.75 делится на ширину сцены, что равно 500
PercentX= -1.3500999999999999
Происходит это: mouseX=858.05 делится на ширину сцены, что равно 500
PercentX= -1.6291
Происходит это: mouseX= 1958.95 делится на ширину сцены, что равно 500
PercentX= -3.0158
Происходит это: mouseX=-748.6 делится на ширину сцены, что равно 500
PercentX= 0.0446
Как так? Я же мышкой двигаю, как она может принимать такие значения?

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

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

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


 


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


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