Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Movie clip, который тормозя следует за курсором (http://www.flasher.ru/forum/showthread.php?t=104833)

peresmeshnik 03.12.2007 15:28

Movie clip, который тормозя следует за курсором
 
Т.е. необзодимо сделать такой клип, который бы бегал за курсором по более сглаженной траектории.
В случае с этим кодом:
Код:

var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
       
    test._x = _xmouse;
    test._y = _ymouse;
    updateAfterEvent();
};
Mouse.addListener(mouseListener);

Объект следует непрерывно за курсором, а нужно чтобы он как бы использовал класс Tween, что-ли...
Подскажите пожалуйста, как это сделать!!!!

Molecula 03.12.2007 15:56

Ну, если по Вашему то так:
Код:

var k:Number = 0.1;
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
  test._x = test._x+(_xmouse-test._x)/k;
    test._y = test._y+(_ymouse-test._y)/k;

    updateAfterEvent();
};
Mouse.addListener(mouseListener);


etc 03.12.2007 17:56

Molecula, что будет, если я остановлю мышь?

Molecula 03.12.2007 18:02

А может так и задумывалось, я ж написал, мол, "если по Вашему".
Кстати, ошибся, не делить, а умножить надо ставить.
Ну, а вообще, конечно же обычно так пишут:

Код:

var k:Number = 0.1;
test.onEnterFrame= follow;
function follow()
{
        this._x+=(_xmouse-this._x)*k;
        this._y+=(_ymouse-this._y)*k;
}


CrazyFlasher 03.12.2007 18:09

Код:

var vx:Number;
var vy:Number;
var d:Number;
var speed:Number = 5;
var target:MovieClip = _root;

mc.onEnterFrame = function(){
        vx = target._xmouse - mc._x;
        vy = target._ymouse - mc._y;
        d = Math.sqrt(vx*vx + vy*vy);
       
        smooth();
        if(Math.abs(mc._x - target._xmouse) > 5 || Math.abs(mc._y - target._ymouse) > 5){
                mc._x += vx / d * speed;
                mc._y += vy / d * speed;
        }
}

function smooth(){
        var newD:Number = Math.sqrt((mc._x - target._xmouse)*(mc._x - target._xmouse) + (mc._y - target._ymouse)*(mc._y - target._ymouse));
        speed = newD / 10;
}

накидал по-быстрому :) вроде работает

iNils 03.12.2007 18:17

http://www.flasher.ru/forum/showpost...96&postcount=4

peresmeshnik 04.12.2007 01:49

Всем огромное спасибо!!! Как раз то, что было нужно.
Код:

                this._x = this._parent._xmouse;
Только не понял - для чего был нужен "_parent"? Я его удалил, все равно работает.

peresmeshnik 04.12.2007 03:56

Если это возможно, то еще один вопрос как раз по теме:
Нужно сделать то же самое, но только для увеличения/уменьшения муви клипа, т.е. проблему можн рассмотреть след образом - есть меню, при движении курсора над элементами они должны соответственно увеличиваться(при приближении) и уменьшаться (при отдалении курсора).
Я понимаю, что это несложно, но мне никак не адаптировать этот код под меню...:umnik2:


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

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