GRELIKTIKON | Дата: Суббота, 09.04.2011, 12:47 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1400
Статус: Offline
| http://www.flashist.ru/2008....h-karty
"Чем ночь темней, тем ярче звёзды"
|
|
| |
GRELIKTIKON | Дата: Суббота, 09.04.2011, 12:48 | Сообщение # 2 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1400
Статус: 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
Статус: Offline
| http://www.flashist.ru/2008....h-karty
"Чем ночь темней, тем ярче звёзды"
|
|
| |