Показать сообщение отдельно
Старый 03.09.2004, 20:13
Штрек вне форума Посмотреть профиль Отправить личное сообщение для Штрек Найти все сообщения от Штрек
  № 8  
Штрек

Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
Да уж Силин бы сделал конфетку.
У меня вот что получилось -
есть мув с пунктирным квадратом и линкаге -

Ну а дальше всё просто /относительно/ -

xf = foto._x;
yf = foto._y;
xc = cont._x;
yc = cont._y;
_root.onMouseDown = function() {
limit_foto = foto.getBounds(this);
foto.setMask(null);
if (!knopka.hitTest(_root._xmouse, _root._ymouse, false)) {
foto._x = xf;
foto._y = yf;
cont._x = xc;
cont._y = yc;
x1 = _root._xmouse;
y1 = _root._ymouse;
_root.onEnterFrame = function() {
cont.attachMovie("punktir", "punktir", 1);
with (cont) {
if (x1>=limit_foto.xMin && x1<=limit_foto.xMax) {
if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) {
_x = x1+(_root._xmouse-x1)/2;
_xscale = Math.abs(_root._xmouse-x1);
} else if (_root._xmouse<limit_foto.xMin) {
_x = limit_foto.xMin+(x1-limit_foto.xMin)/2;
_xscale = Math.abs(x1-limit_foto.xMin);
} else if (_root._xmouse>limit_foto.xMax) {
_x = x1+(limit_foto.xMax-x1)/2;
_xscale = Math.abs(x1-limit_foto.xMax);
}
} else if (x1<limit_foto.xMin) {
if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) {
_x = limit_foto.xMin+(_root._xmouse-limit_foto.xMin)/2;
_xscale = Math.abs(limit_foto.xMin-_root._xmouse);
} else if (_root._xmouse<limit_foto.xMin) {
_x = limit_foto.xMin;
_xscale = 0;
} else if (_root._xmouse>limit_foto.xMax) {
_x = (limit_foto.xMax+limit_foto.xMin)/2;
_xscale = Math.abs(limit_foto.xMax-limit_foto.xMin);
}
} else if (x1>limit_foto.xMax) {
if (_root._xmouse>=limit_foto.xMin && _root._xmouse<=limit_foto.xMax) {
_x = limit_foto.xMax+(_root._xmouse-limit_foto.xMax)/2;
_xscale = Math.abs(limit_foto.xMax-_root._xmouse);
} else if (_root._xmouse<limit_foto.xMin) {
_x = (limit_foto.xMax+limit_foto.xMin)/2;
_xscale = Math.abs(limit_foto.xMax-limit_foto.xMin);
} else if (_root._xmouse>limit_foto.xMax) {
_x = limit_foto.xMax;
_xscale = 0;
}
}
if (y1>=limit_foto.yMin && y1<=limit_foto.yMax) {
if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) {
_y = y1+(_root._ymouse-y1)/2;
_yscale = Math.abs(_root._ymouse-y1);
} else if (_root._ymouse<limit_foto.yMin) {
_y = limit_foto.yMin+(y1-limit_foto.yMin)/2;
_yscale = Math.abs(y1-limit_foto.yMin);
} else if (_root._ymouse>limit_foto.yMax) {
_y = y1+(limit_foto.yMax-y1)/2;
_yscale = Math.abs(y1-limit_foto.yMax);
}
} else if (y1<limit_foto.yMin) {
if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) {
_y = limit_foto.yMin+(_root._ymouse-limit_foto.yMin)/2;
_yscale = Math.abs(limit_foto.yMin-_root._ymouse);
} else if (_root._ymouse<limit_foto.yMin) {
_y = limit_foto.yMin;
_yscale = 0;
} else if (_root._ymouse>limit_foto.yMax) {
_y = (limit_foto.yMax+limit_foto.yMin)/2;
_yscale = Math.abs(limit_foto.yMax-limit_foto.yMin);
}
} else if (y1>limit_foto.yMax) {
if (_root._ymouse>=limit_foto.yMin && _root._ymouse<=limit_foto.yMax) {
_y = limit_foto.yMax+(_root._ymouse-limit_foto.yMax)/2;
_yscale = Math.abs(limit_foto.yMax-_root._ymouse);
} else if (_root._ymouse<limit_foto.yMin) {
_y = (limit_foto.yMax+limit_foto.yMin)/2;
_yscale = Math.abs(limit_foto.yMax-limit_foto.yMin);
} else if (_root._ymouse>limit_foto.yMax) {
_y = limit_foto.yMax;
_yscale = 0;
}
}
xxx = _x;
yyy = _y;
_parent.fl = true;
}
};
}
};
_root.onMouseUp = function() {
xsmesch = foto._x-xxx;
ysmesch = foto._y-yyy;
delete _root.onEnterFrame;
};
knopka.onPress = function() {
foto.setMask(cont);
if (fl) {
foto._x += xsmesch;
foto._y += ysmesch;
cont._x += xsmesch;
cont._y += ysmesch;
}
fl = false;
};
Очень надеюсь на помошь Нокса в оптимизации кода.
Вложения
Тип файла: zip untitled-3.zip (19.1 Кб, 132 просмотров)