Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как остановить объект? (http://www.flasher.ru/forum/showthread.php?t=146485)

losa300 09.11.2010 15:12

Как остановить объект?
 
Вложений: 1
Здравствуйте, хочу добиться эффекта, как на сайте 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;
}

Заранее огромное спасибо.:)

magistr__ 09.11.2010 17:01

Можно повесить 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);


losa300 09.11.2010 17:21

Действительно теперь все работает, но как сделать так, чтобы они не сразу останавливались. (а то очень резко получается) А то сейчас как-то мерзко они замирают. Как можно добавить плавноq остановки?

t4arty 09.11.2010 18:09

через EnterFrame, через таймеры, через твины, еще как то = ) выбирайте сами

tsarapkabel 09.11.2010 18:18

Цитата:

Сообщение от losa300 (Сообщение 948621)
Действительно теперь все работает

Вам про MOUSE_MOVE уже вчера неоднократно говорили.

TihelpER 09.11.2010 18:53

Цитата:

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

Вам уже ответили правильно, но конкретизирую для ясности.

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

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

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


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

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