![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
Привет! Не буду напрягать подробностями и просьбой писать большие скрипты. Нужен лишь толчок...
Сделал зум(картинка плавно увеличивается и отцентровывается в том месте, куда щелкнули). Прекрасный обратный зум можно сделать, заменив в некоторых местах знаки(+ на -). Казалось бы все отлично, но есть один большой нюанс... Картинку в полном размере таскать по экрану не разрешается, увеличенную - можно и нужно(для просмотра). Но при щелчке её еще нужно плавно возвращать в оригинальный размер и на то самое место, где она стояла. Вот, собственно, в этом и проблема. Как всегда плавно возвращать клип с картинкой, туда где он стоял, не зависимо от его текущих координат? |
|
|||||
|
Есть такая идея:
Tween class позволяет делать хорошие анимационные эфекты. Просто сделай движение по 4 свойствам твоей карты: _x, _y, _width и _height. Да, может быть карта будет зумироваться не идеально (хотя по моим представлениям должно быть шикарно), но в итоге она встанет на нужное место с нужной высотой и шириной.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
Вариант, но я с ним как-то особо не работал. Пока разберусь...
Вот какого типа мне нужно сделать штуку - http://www.zinio.com/express3?issue=...o=int&prev=sub (там кликаешь на обложку - её можно крутить-вертеть и она ставится обратно) Может еще есть варианты? Чую, можно по-простому, меняя _x и _y клипа относительно какой-то точкой, по формуле.. Но не представляю как ) |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Что-то я не понял, в чем проблема? Если формулы верны, картинка вернется к своему размеру (_xscale=_yscale=0) и в запомненные (если надо) координаты. Составьте правильно формулу - используйте не просто пошаговый зум от состояния на столько-то, а от состояния к цели.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
Так я и не говорю, что знаю правильную формулу.. Есть догадки, во всяком случае, что-то приближенное к истине. Вот примерный кусок кода:
// Находим расстояние между новым положением картинки и дефолтным(28, 80 пох и по у, для полного, вмещаемого в окно размера)
var diff_x = _root.picMovie._x - 28;
var diff_y = _root.picMovie._y - 80;
// направление движение: если новое положение мувика левее/выше, то перемещать нужно вправо/ниже
var wayX = (diff_x < 28)? 1: -1;
var wayY = (diff_y < 80)? 1: -1;
// меняем знак - расстояние должно быть только положительным
diff_x *= (diff_x < 0)? -1: 1;
diff_y *= (diff_y < 0)? -1: 1;
var ratio_x = diff_x / diff_y; // узнаём как относится разница x к разнице y
var ratio_y = diff_y / diff_x; // по сути - узнаём шаг относительно другого
if (ratio_x > ratio_y) {
var step_x = ratio_x;
var step_y = 1;
} else
if (ratio_y > ratio_x) {
var step_x = 1;
var step_y = ratio_y;
}
// ну и двигаем
_root.picMovie._x += step_x*wayX;
_root.picMovie._y += step_y*wayY;
Беда одна - если в эту конструкцию включить изменения _x|_yscale, то картинка начинает себя странно вести.. При уменьшении съезжать в стороны и т.п. Да, и пример віше тоже не всегда себя корректно ведёт. Может есть лучший вариант? ![]() Последний раз редактировалось combo; 22.04.2008 в 19:57. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
Вообщем, проблему решил. Вышло не очень аккуратно, но зум очень быстрый, поэтому погрешностей сильно не видно. Зато без глюков, как с шагом. Смысл вот в чём(может кому еще интересно будет).
Перенесенный на новое место(точка B) клип можно вернуть к исходной точке(A), создав массив с координатами следования. Эти данные - число, полученное в результате деления суммы A и B на количество нужных нам шагов(чем больше, тем плавнее движется мувик). Единственное опять-таки возникающее НО - это изменение scale, которое клонит мувик в стороны в зависимости от точки привязки. Но это можно отрегулировать, каждый раз прибавляя/отнимая к точкам следования мувика какое-то число. Последний раз редактировалось combo; 23.04.2008 в 12:51. |
|
|||||
|
Banned
[+5 15.02.09]
[++5 15.02.09] Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
|
Нагородил ты.... много лишнего
|
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
а) возвращаем к нужной точке
б) меняем скейл не обязательно одновременно. если точка привязки стоит "от балды", исправьте и не мучайтесь. для программно изменяемых объектов левый верхний угол изображения ставится "в ноль", если конечно не предполагается специфическое вращение.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 177
|
Wolsh, ну это все понятно. К тому же, scale должен обязательно меняться вместе с координатами. Зум, конечно, шустрый, но ведь не настолько, чтобы ничего не разглядеть...
Беда еще и в том, что мувик програмносозданный, а как у таких мувиков менять точку трансформации - из постов на форуме, я так толком и не понял. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:51. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| зум |
|
|