Форум 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)
-   -   Плавное изменение координат как реакция на изменение _xmouse _ymouse (http://www.flasher.ru/forum/showthread.php?t=87168)

Dimalar 30.10.2006 17:16

Плавное изменение координат как реакция на изменение _xmouse _ymouse
 
Как осуществить плавное изменение координат клипа при изменении _xmouse и _ymouse (при движении мышью)?

MyXus 30.10.2006 17:37

реализовать инерцию

Wolsh 31.10.2006 02:41

Обычно я пользуюсь формулой

Код:

my_mc.onMouseMove = function() {
     
        _root.onEnterFrame = function() {
              my_mc._x = my_mc._x - (my_mc._x - _xmouse)/speed;
              my_mc._y = my_mc._y - (my_mc._y - _ymouse)/speed;
      }
}

где speed - скорость, задаваемая вручную или программно.

iNils 31.10.2006 03:01

Более корректное решение:
Код:

//// mc - имя вдигающегося клипа
mc.onMouseMove = function () {
        this.speed = 5;
        this.onEnterFrame = function () {
                var dx = this._x - this._parent._xmouse;
                var dy = this._y - this._parent._ymouse;
                this._x -= dx / this.speed;
                this._y -= dy / this.speed;
                if (!(Math.abs (dx) > 0.01 && Math.abs (dy) > 0.01)) {
                        this._x = this._parent._xmouse;
                        this._y = this._parent._ymouse;
                        delete this.onEnterFrame;
                }
        };
};

Единственный момент, что у данного клипа, не должен использоваться onEnterFrame.

Dimalar 31.10.2006 12:47

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

etc 31.10.2006 13:37

А у меня что-то вроде this._x += (_xmouse-this._x)/speed; :D

SamOvar 31.10.2006 13:43

Вложений: 1
Огромное спасибо Dimalar`у за вопрос и iNils`у за ответ! :D
Если никто не возражает, я разовью тему...:rolleyes:

Как ограничить перемещение мувика по сцене собственными границами...
Примерчик прикрепил для удобства. Условия: сцена размером 760*220 и мувик размерами 900*300. Задача: при достижении одного из краёв мувика границы сцены движение должно прекратиться. Т.е. красная линия в кадре появляться не должна...

Wolsh 31.10.2006 15:38

Цитата:

Сообщение от __etc
А у меня что-то вроде this._x += (_xmouse-this._x)/speed; :D

Да, конечно :) Ещё хотелось бы заметить, что лучше не делить на скорость, а умножать. Тогда можно будет задавать скорость 0 для каких-то нужд.

BigDan 31.10.2006 15:42

Код:

function check(mc:MovieClip){
  var upY:Number=Stage.height/2+(mc._height/2-Stage.height/2);
  var downY:Number=Stage.height/2-(mc._height/2-Stage.height/2);
  var rightX:Number=Stage.width/2+(mc._width/2-Stage.width/2);
  var leftX:Number=Stage.width/2-(mc._width/2-Stage.width/2);
  if(mc._y>=upY){
    mc._y-=4;
  }
  if(mc._y<=downY){
    mc._y+=4;
  }
  if(mc._x>=rightX){
    mc._x-=4;
  }
  if(mc._x<=leftX){
    mc._x+=4;
  }
}


etc 31.10.2006 15:50

Wolsh, можно и умножать.


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

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