Суббота, 05.07.2025, 18:35Приветствую Вас Посторонний | RSS
Главная | | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ZOOM
GRELIKTIKONДата: Суббота, 09.04.2011, 12:47 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 1400
Награды: 0
Репутация: 0
Статус: Offline
http://www.flashist.ru/2008....h-karty

"Чем ночь темней, тем ярче звёзды"
 
GRELIKTIKONДата: Суббота, 09.04.2011, 12:48 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1400
Награды: 0
Репутация: 0
Статус: Offline
/*
Сегодня по просьбе телезрителей, хоть и с запозданием, н овсё же, мы разбираем урок по ЗУМУ (приближению/
/масштабированию) объектов
*/
//Делаем, чтобы флешка не масштабировалась
Stage.scaleMode = “noScale”;
_root._quality = “BEST”;
//
//Функция МАСШТАБИРОВАНИЯ
//
function zoom_func() {
trace(“zoom_func”);
//
//Проверяем положение позунка
//
//Сразу надо отметить, что функция Math.round - округляет не целые числа, до ближайшего целого числа.
//Т.е. число 0.5 вернёт нам 1, а число 0.3 - ноль
//Функция Math.abs - возвращает нам модуль числа, т.е. всё время будет возвращать положительные значения
//Так, запись Math.abs(-5) и Math.abs(5) вернёт абсолютно одинаковые значения, т.е. 5
//
//Кто не знает, свойства _xscale и _yscale отвечают за масштабирование обхекта по X и Y соответственно,
//стандартное значение этих свойств у объекта без искажений по ширине или высоте будет 100,
//если ширина/высота увеличиваются, то значения _xscale и _yscale будут больше 100,
//если ширина/высота уменьшаются, то и значения свойств будут меньше 100.
if (_root.pan_mc.pan_mc._y<-1) {
//Если он выше координаты 0 по Y
_root.logo_mc._xscale = _root.logo_mc._yscale=100+1900/50*Math.round(Math.abs(_root.pan_mc.pan_mc._y));
} else if (_root.pan_mc.pan_mc._y>1) {
//Если он ниже координаты 0 по Y
_root.logo_mc._xscale = _root.logo_mc._yscale=100-95/50*Math.round(Math.abs(_root.pan_mc.pan_mc._y));
} else {
//Если ползунок находится в районе нулевой координаты
_root.logo_mc._xscale = _root.logo_mc._yscale=100;
}
//Присваиваем текстовому полю текущее значение масштаба объекта logo_mc
_root.zoom_txt.text = _root.logo_mc._xscale+“%”;
//Запускаем функцию, которая будет смещать объект logo_mc в зависимости от положения курсора
//и размеров объекта (см. ниже)
_root.onMouseMove();
}
//
//ПОЛЗУНОК РЕГУЛИРОВАНИЯ МАСШТАБА ОБЪЕКТА
//
//Создаём событие “НАЖАТЬ”
pan_mc.pan_mc.onPress = function() {
//Когда на ползунок нажали, для бОльшей наглядности, меняем цвет ползунка, на более блеклый
this.gotoAndStop(2);
//Начинаем перетаксивать ползунок
this.startDrag(false, this._x, -50, this._x, 50);
//При движении мышью запускаем функцию МАСШТАБИРОВАНИЯ, которая была описана выше
this.onMouseMove = _root.zoom_func;
};
//Создаём событие “ОТПУСТИТЬ”
pan_mc.pan_mc.onRelease = pan_mc.pan_mc.onReleaseOutside=function () {
//Возвращаем начальный цвет ползунку
this.gotoAndStop(1);
//Останавливаем перетаскивание
this.stopDrag();
//Удаляем событие, которое срабатывало каждый раз при движении мышки
delete this.onMouseMove;
};
//
//Создаём событие на движение мышки, в зависимости от положения курсора мы будемсдвигать клип logo_mc
//либо левее, либо правее центра экрана
//
onMouseMove = function () {
//Проверяем, если мышка находится в пределах рамки, размером 650 на 400 пикселей, то активируем
//перемещение объекта logo_mc
if (_xmouse>0 and _xmouse<650 and _ymouse>0 and _ymouse<400) {
//Расчитываем коэфициент “СДВИГА”, грубо говоря, он нам будет показывать на сколько левее или правее
//от центра флешки находится курсор мышки в процентном соотношении.
//Этот коэфициент будет изменяться от -1 до 1, где -1 - это курсор находится в самой крайней левой
//по оси X, ещё чуть чуть и курсор выйдет за край рамки слева. 0 - это курсор находится на середине
//флешки. 1 - курсор находится в крайней правой точке.
varKoefX = (_xmouse/325)-1;
trace(“varKoef “+varKoefX);
//Расчитываем разницу, между шириной объекта и шириной рамки (рабочей области). Полученное значение
//делится на 2, потому что есть правй и левый край. Не знаю, как объяснить лучже даже, в общем
//примите это как есть =)
varDif = (650-logo_mc._width)/2;
trace(“varDif “+varDif);
//Проверяем, меньше или больше ширина клипа ширины рабочей области.
//В зависимости от условий проверки применяем свой алгоритм расчёта смещения клипа от центра.
//
//325 - это ширина рабочей области, делённая по-полам, т.е., грубо говоря, СЕРЕДИНА.
if (logo_mc._width<650) {
logo_mc._x = 325-(varDif*varKoefX);
} else {
logo_mc._x = 325+(varDif*varKoefX);
}
//ПРОВОДИМ АНАЛОГИЧНЫЕ ДЕЙСТВИЯ С ВЫСОТОЙ ОБЪЕКТА И СМЕЩЕНИЕМ ЕГО ПО ОСИ Y
varKoefY = (_ymouse/200)-1;
trace(“varKoefY “+varKoefY);
varDifY = (400-logo_mc._height)/2;
trace(“varDifY “+varDifY);
if (logo_mc._height<400) {
logo_mc._y = 200-(varDifY*varKoefY);
} else {
logo_mc._y = 200+(varDifY*varKoefY);
}
}
};
//
//Создаём событие на ВРАЩЕНИЕ КУРСОРА
//
//В качестве слушателя события подключаем _root
Mouse.addListener(this);
//Создаём само событие вращения колёсика (подробнее о нём можете почитать здесь:
// http://www.flashist.ru/2007....remotka
this.onMouseWheel = function(varDelta:Number) {
trace(“onMouseWheel”);
//Смещаем положение ползунка
_root.pan_mc.pan_mc._y -= varDelta;
//Проверяем, если ползунок поднимается выше отметки -50 по Y, то ставим его на положение -50
if (_root.pan_mc.pan_mc._y<-50) {
_root.pan_mc.pan_mc._y = -50;
} else if (_root.pan_mc.pan_mc._y>50) {
//Если опускается ниже 50, то ставим на 50
_root.pan_mc.pan_mc._y = 50;
}
//Запускаем функцию МАСШТАБИРОВАНИЯ
_root.zoom_func();
};


"Чем ночь темней, тем ярче звёзды"
 
GRELIKTIKONДата: Суббота, 09.04.2011, 17:34 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 1400
Награды: 0
Репутация: 0
Статус: Offline
http://www.flashist.ru/2008....h-karty

"Чем ночь темней, тем ярче звёзды"
 
  • Страница 1 из 1
  • 1
Поиск:

Disign by Mark © 2025