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

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

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

Регистрация: Nov 2010
Сообщений: 2
Question Как остановить объект?

Здравствуйте, хочу добиться эффекта, как на сайте http://arminmorbach.com/.

Проблема в следующем: как заставить останавливаться обьекты? Обьекты должены двигаться в противоположную сторону не только, когда над ним курсор.(mouseEvent.MOUSE_MOVE. не подходит) А вот останавливаться, когда остановился курсор (вообще в любой точке сцены).
Мне подсказали, что можно завести еще переменную, где хранить старую позицию мыши
И в обработчике проверять, если мышь не сместилась относительно этого положения, то не двигаем обьект. если сместилась, то двигаем. Но как это
расписать не понимаю.
Код AS3:
 
addEventListener(Event.ENTER_FRAME, move_s);
addEventListener(Event.ENTER_FRAME, move_sss);
addEventListener(Event.ENTER_FRAME, move_ssss);
addEventListener(Event.ENTER_FRAME, move_sssss);
 
var skorost:int = 200;
 
var skorost2:int = 70;
var skorost3:int = 80;
var skorost4:int = 300;
 
 
 
 
 
 
function move_s(event:Event):void{
 
		var posX:Number = -mouseX+(stage.stageWidth/2);
		var posY:Number = -mouseY+(stage.stageHeight/2);
 
	   mcv.x+=posX/skorost;
	    mcv.y+=posY/skorost;
 
}
 
 
function move_sss(event:Event):void{
 
		var posX:Number = -mouseX+(stage.stageWidth/2);
		var posY:Number = -mouseY+(stage.stageHeight/2);
 
	   mcv2.x+=posX/skorost2;
	    mcv2.y+=posY/skorost2;
 
}
 
function move_ssss(event:Event):void{
 
		var posX:Number = -mouseX+(stage.stageWidth/2);
		var posY:Number = -mouseY+(stage.stageHeight/2);
 
	   mcv3.x+=posX/skorost3;
	    mcv3.y+=posY/skorost3;
 
}
function move_sssss(event:Event):void{
 
		var posX:Number = -mouseX+(stage.stageWidth/2);
		var posY:Number = -mouseY+(stage.stageHeight/2);
 
	   mcv4.x+=posX/skorost4;
	    mcv4.y+=posY/skorost4;
}
Заранее огромное спасибо.
Вложения
Тип файла: zip move.swf.zip (1.4 Кб, 48 просмотров)

Старый 09.11.2010, 17:01
magistr__ вне форума Посмотреть профиль Отправить личное сообщение для magistr__ Найти все сообщения от magistr__
  № 2  
Ответить с цитированием
magistr__

Регистрация: Nov 2010
Сообщений: 4
Можно повесить mouseEvent.MOUSE_MOVE на stage. И обьекты будут двигаться не только когда над ними курсор.
Код AS3:
stage.addEventListener(MouseEvent.MOUSE_MOVE, move_s);
stage.addEventListener(MouseEvent.MOUSE_MOVE, move_sss);
stage.addEventListener(MouseEvent.MOUSE_MOVE, move_ssss);
stage.addEventListener(MouseEvent.MOUSE_MOVE, move_sssss);


Последний раз редактировалось magistr__; 09.11.2010 в 17:05.
Старый 09.11.2010, 17:21
losa300 вне форума Посмотреть профиль Отправить личное сообщение для losa300 Найти все сообщения от losa300
  № 3  
Ответить с цитированием
losa300

Регистрация: Nov 2010
Сообщений: 2
Действительно теперь все работает, но как сделать так, чтобы они не сразу останавливались. (а то очень резко получается) А то сейчас как-то мерзко они замирают. Как можно добавить плавноq остановки?

Старый 09.11.2010, 18:09
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 4  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
через EnterFrame, через таймеры, через твины, еще как то = ) выбирайте сами

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

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Цитата:
Сообщение от losa300 Посмотреть сообщение
Действительно теперь все работает
Вам про MOUSE_MOVE уже вчера неоднократно говорили.

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

Регистрация: May 2007
Адрес: Moskow
Сообщений: 47
Отправить сообщение для TihelpER с помощью ICQ
Цитата:
Сообщение от losa300 Посмотреть сообщение
Действительно теперь все работает, но как сделать так, чтобы они не сразу останавливались. (а то очень резко получается) А то сейчас как-то мерзко они замирают. Как можно добавить плавноq остановки?
Вам уже ответили правильно, но конкретизирую для ясности.

Вам в программе нужно разделить просчёт координат, в которые должны попасть клипы, и перемещение клипов в эти координаты.

Заведите для каждого клипа экземпляр класса Tween и при изменении положении расчитывайте новые координаты и пихайте их в свойства работающих Tween'ов.

Главное не создавать экземпляры твинов на лету. Сборщик мусора питается твинами, на которых нету ссылок.

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

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

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


 


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


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