Форум 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=139954)

RoXy 16.05.2010 01:30

Мышь толкает объект
 
Здравстуйте! Подскажите пожалуйста как раелизовать такую задачу: на сцене есть объект мувиклип, при наведении на него мыши он должен перемещаться так, как будто мышь толкнула его. При этом он должен ударятся о границы сцены и отскакивать от них...Движение происходит с постепенным затуханием.

Прочитала про использование Tween и Easing, но не понимаю как задать модель движения...

udaaff 16.05.2010 01:42

Используйте какой-нибудь физический движок.

Psycho Tiger 16.05.2010 11:31

Да не, он тут излишен.
Общая схема: смотрите, где находится мышка до соприкосновения с объектом, отсюда находите скорость его по 2 осям. Эту скорость по обеим осям уномжайте постоянно на число, меньшее 1 - будет затухание. Ну, а при пересечении границы по одной из оси меняйте эту скорость на противоположную.

RoXy 16.05.2010 14:21

У меня не очень хорошо со школьной физикой)) как выразить скорость объекта по осям?

КорДум 16.05.2010 14:49

Вложений: 1
а я бы вот так сделал: каждое передвижение мыши запоминал в переменную, при столкновении с курсором и объектом высчитывал скорость импульса и запускал enterFrame у объекта. Вот как-то так:

Код AS3:

private function onMouseMove(e:MouseEvent):void {
        if (clip.hitTestPoint(stage.mouseX, stage.mouseY)) {
                clip.speed = stage.mouseX - oldX;
                clip.onPush(); // энтерФрейм у объекта
        }
        oldX = stage.mouseX;
}

Ну и сам энтерФрейм:

Код AS3:

private function onEnterFrame(e:Event):void {
        this.x += speed;
        speed *= 0.98;
        if ((speed > 0 && speed < 0.1) || (speed < 0 && speed > -0.1))
                this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        // проверки на выход за границы и прочее
}

Вложение - то, что получилось в итоге. Думаю, сделать и для оси Y не будет проблемным.

RoXy 16.05.2010 18:27

а в чем состоит метод clip.onPush(); ?

КорДум 16.05.2010 19:24

Он всего лишь регистрирует слушателя enterFrame.

RoXy 16.05.2010 20:33

Ясно...спасибо огромное!!!


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

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