PDA

Просмотр полной версии : Замкнутая траектория?


dirz
16.02.2006, 16:14
Помогите с сабжем..нужно заставить циклично двигаться movie clip по замкнутой квадратной тректории.. Не доходит пока, как :(

__i
16.02.2006, 16:24
координаты 2х точек (х1,у1) (х2,у2). 4 условия, 2 переменных.

dx,dy - приращения по соответствующим координатам
......
mc._x+=dx;
mc._y+=dy;

условие 1 : if (mc._x>x2) {dx=0, dy=+5} //двигались по горизонтали вышли за приделы квадрата - начали двигаться по вертикали

остольные условия (3 шт) придумай сам.

dirz
16.02.2006, 18:37
я не понял...можно пример? :(( у меня всё время обьект выскакивает за пределы траектории..(
тоесть замкнутой сделать ее не получается

min = 48;
max = 225;
yspd = 1;
xspd = 0;
}
onClipEvent (enterFrame) {
_y += yspd;
_x += xspd;
if (_y>max) {
yspd=0;
xspd=+1;
}
if (_x>max) {
xspd=0;
yspd=-1;
}
if (_y<min){
yspd=0;
xspd=-1;
}
if (_x<min) {
xspd=0;
yspd=+1;
}

__i
16.02.2006, 19:09
смотри - ты прибавил к х он стал больше, чем твой макс и dx приравнял 0, т.е. он у тя теперь всегда больше макс

__i
16.02.2006, 19:13
ну и пример

_mc = _root.createEmptyMovieClip('mc', 1);
_mc.beginFill(0, 100);
_mc.lineTo(20, 40);
_mc.lineTo(40, 0);
_mc.endFill();
_mc.lx = 0;
_mc.ly = 0;
_mc.rx = 20;
_mc.ry = 20;
_mc.dx = 1;
_mc.dy = 0;
_mc.onEnterFrame = function() {
trace(this._x+' '+this._y+' '+this.dx+' '+this.dy)
this._x += this.dx;
this._y += this.dy;
if (this._x>this.rx) {
this._x -= this.dx;
this.dx = 0;
this.dy = 1;
}
if (this._x<this.lx) {
this._x -= this.dx;
this.dx = 0;
this.dy = -1;
}
if (this._y>this.ry) {
this._y -= this.dy;
this.dx = -1;
this.dy = 0;
}
if (this._y<this.ly) {
this._y -= this.dy;
this.dx = 1;
this.dy = 0;
}
};

dirz
16.02.2006, 20:07
Ура! Спасибо :)