Форум 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)
-   -   Перемещение (http://www.flasher.ru/forum/showthread.php?t=100492)

aciton 28.08.2007 18:35

Перемещение
 
подскажите плз как сделать плавное перемещение на разницу координат клика и центра окна.
было бы здорово если был какой-нибудь пример )

udaaff 28.08.2007 21:01

На сцене должен быть мувик с именем "mc"
Код:

var mouseListener:Object = new Object();
mouseListener.onMouseDown = function() {
       
        moving(_xmouse, _ymouse);
};
Mouse.addListener(mouseListener);
function moving(x:Number, y:Number) {
        mc.onEnterFrame = function() {
                if (Math.abs(this._x-x)<1 && Math.abs(this._y-y)<1) {
                        trace("deleted");
                        this._x = x;
                        this._y = y;
                        delete this.onEnterFrame;
                }
                this._x += (x-this._x)*.4;
                this._y += (y-this._y)*.4;
        };
}


aciton 28.08.2007 21:10

спасибо огромное. этот ваш код я уже видел. но хочется по другому, чтобы мувик двигался не в сторону клика, а чтобы место клика двигалось к центру экрана

Aziz Zaynutdinoff 28.08.2007 21:10

или так
Код:

function slideThis(mc:MovieClip, __x:Number, __y:Number, __speed:Number):Void
{
    mc.onEnterFrame = function()
    {
      var dx:Number = (__x - this._x) / __speed;
      var dy:Number = (__y - this._y) / __speed;
      if(Math.abs(dx) < .1 && Math.abs(dy) < .1)
      {
        this._x = __x;
        this._y = __y;
        delete this.onEnterFrame;
      } else {
        this._x += dx;
        this._y += dy;
      }
    }
}
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function()
{
  slideThis(mc, _xmouse, _ymouse, 3);
}
Mouse.addListener(mouseListener);

На сцене должен содержаться MovieClip с прописанным instance name "mc"

PS
чтобы дивгалась сцена (или возникала такая иллюзия, перемещайте все объекты по дивжению мыши, либо перемещайте MovieClip, внутри которого находяться необходимые к перемещению клипы.

aciton 28.08.2007 21:28

спасибо, насчет того что все объкеты находились в 1 клипе и двигались - понятно, не понятны 2 вещи,
1 как сделать чтобы точка клика двигалась к центру
2 на сайте видно, что есть несколько слоев (клипов), которе при перемещении двигаются с разным расстоянием, и возникает иллюзия перспективы, где мувики, находящиеся на переднем плане двигаются на большее расстояние, чем задние..

udaaff 28.08.2007 21:32

В общем то, практически тоже самое
Код:

my_mc.onRelease = function() {
        moving(this,Stage.width/2-this._xmouse, Stage.height/2-this._ymouse);
};
//
function moving(mc:MovieClip, x:Number, y:Number) {
        mc.onEnterFrame = function() {
                if (Math.abs(this._x-x)<1 && Math.abs(this._y-y)<1) {
                        trace("deleted");
                        this._x = x;
                        this._y = y;
                        delete this.onEnterFrame;
                }
                this._x += (x-this._x)*.4;
                this._y += (y-this._y)*.4;
        };
}


aciton 28.08.2007 21:41

спасибо вам огромное товарищи!!!
а про вопрос 2 не подскажите для кучи ))) ?

udaaff 28.08.2007 21:49

Параметр dl отвечает за "замедление" в данной функции
Код:

my_mc.onRelease = function() {
        moving(this,Stage.width/2-this._xmouse, Stage.height/2-this._ymouse,.2);
};
//
function moving(mc:MovieClip, x:Number, y:Number,dl:Number) {
        mc.onEnterFrame = function() {
                if (Math.abs(this._x-x)<1 && Math.abs(this._y-y)<1) {
                        trace("deleted");
                        this._x = x;
                        this._y = y;
                        delete this.onEnterFrame;
                }
                this._x += (x-this._x)*dl;
                this._y += (y-this._y)*dl;
        };
}

или ты про что? я не могу до конца въехать

aciton 28.08.2007 21:59

это всего лишь замедление, в итоге 2 мувика остаются после перемещения на одинаковой позиции по отношению друг к другу
а на сайте видна перспектива отчетливо. т.е. для заднего мувика расстояние движения меньше чем у мувика на переднем плане
в твоем случае координаты 1 и 2 мувика до и после перемещения по отношению друг к другу остаются неизменными

udaaff 28.08.2007 22:15

aciton, вы ввели новое понятие в физику -- "расстояние движения", осталось единицу измерения только придумать. В "моем случае" присутствует только один мувик.

Что мешает два мувика, переместить на две разные позиции?


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

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