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

Fokker 27.07.2005 17:55

скорость передвижения клипа
 
День добрый джентельмены.Разбираю тут одну задачку,в которой клип по щелчку мыши перемещается к ее курсору.Код следующий :

MovieClip.prototype.slideTo = function (leaderX,leaderY,speed) {
if (this._x != leaderX && this._y != leaderY) {
this.onEnterFrame = function () {
var deltaX= this._x-leaderX;
var delyaY= this._y-leaderY;
var dist=Math.sqrt((deltaX*deltaX)+(deltaY*deltaY));
var moveX=speed*(deltaX/dist);
var moveY=speed*(deltaY/dist);
if (speed>=dist) {
this._x = leaderX;
this._y = leaderY;
delete this.onEnterFrame;
} else {
this._x-=moveX;
this._y-=moveY;
}
}
}
}
ball_mc.onMouseDown=function () {
this.slideTo(_root._xmouse,_root._ymouse,10);
}


Но вот фигня в том,что скорость перемещения никак не меняется.....хоть 10 задай,хоть 10000 или 0.0001...можно вообще параметр не задавать,он почему-то никак не влияет....Как же все-таки сделать параметр скорости действующим?

iNils 27.07.2005 18:04

Код работает, но в нем была опечатка (пометил красным).
Код:

MovieClip.prototype.slideTo = function (leaderX, leaderY, speed) {
        if (this._x != leaderX && this._y != leaderY) {
                this.onEnterFrame = function () {
                        var deltaX = this._x - leaderX;
                        var deltaY = this._y - leaderY;
                        var dist = Math.sqrt ((deltaX * deltaX) + (deltaY * deltaY));
                        var moveX = speed * (deltaX / dist);
                        var moveY = speed * (deltaY / dist);
                        if (speed >= dist) {
                                this._x = leaderX;
                                this._y = leaderY;
                                delete this.onEnterFrame;
                        } else {
                                this._x -= moveX;
                                this._y -= moveY;
                        }
                };
        }
};
mc.onMouseDown = function () {
        this.slideTo (_root._xmouse, _root._ymouse, 1);
};


Nео 27.07.2005 18:14

исправь в строке var delyaY:Number = this._y-leaderY;
переменную delyaY на deltaY

Nео 27.07.2005 18:15

2iNils:
Опередил :)))

Whatsername 27.07.2005 19:32

Объясните двоечнику, в каком классе учат:
Код:

var moveX = speed * (deltaX / dist);
И как эта теорема называется?
Спасибо.

UPD: Двоечник - это я. Что бы никто бы ничего бы.

Fokker 28.07.2005 11:26

var moveX = speed * (deltaX / dist); // енто распределение скорости по осям

Джентельмены, как всегда...благодарен :)

Whatsername 28.07.2005 11:45

Цитата:

Сообщение от Fokker
енто распределение скорости по осям

Это я понимаю. В учебнике за какой класс это написано? Из чего это следует?

Fokker 28.07.2005 13:02

брат, я не знаю в каком классе это проходят,могу с уверенностью сказать,что в первом и во втором в учебниках этого точно нет.а в чем суть вопроса я не въеду?
принципиально что? (учебник?автор?школьный класс?).а следует все это из пропорций и формулы время=расстояние/скорость

Whatsername 28.07.2005 13:17

уга-уга! глюкануло меня чуток. все же очевидно =)) спасибки.


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

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