Показать сообщение отдельно
Старый 18.10.2008, 10:40
openlex вне форума Посмотреть профиль Отправить личное сообщение для openlex Найти все сообщения от openlex
  № 4  
Ответить с цитированием
openlex

Регистрация: Oct 2008
Сообщений: 1
Подскажите пожалуйста, как сделать полноценный скрол. Чтобы и роликом и перетаскиванием и наведением на любую точку скрола. Чтоб как норм скрол винды, но с нашим дизайном.
Я нашёл как сделать скрол перетаскиванием :

Код:
Stage.scaleMode = "noScale";
_root._quality = "BEST";
//
//Сегодня мы разберём один из видов скроллинга во Flash. Это будет скроллинг не
//для текстовых полей (TextField), а для Movie Clip'ов, внутри которых может быть
//любое содержимое.
//Принцип таков:
//1) На объект, который нужно будет прокручивать накладывается маска.
//2) Объект, который мы "скроллируем" (прокручиваем) сдвигается по оси Y, если
//это вертикальный скроллинг, или по оси X, если это горизонтальный скроллинг.
//Таким образом, при движении, будет определённая часть обхекта будет открываться,
//а определённая скрываться. Та, что будет находится "под" маской, будет видна,
//та что будет выходить за пределы маски, будет скрыта.
//
//Накладываем маску на объект.
obj_mc.setMask(mask_mc);
//Находим разницу между общей высотой обхекта и высотой "видимой части", видимая
//часть у нас будет составлять площадь маски, и, соответственно, высота видимой
//части - это будет высота маски.
var varDif:Number = obj_mc._height-mask_mc._height;
//Создаём событие на нажатие кнопки скроллинга
scroll_mc.onPress = function() {
	//Переходим во второй кадр скроллинга, чтобы сделать нажатие наглядней
	this.gotoAndStop(2);
	//Начинаем перетаскивание кнопки скроллинга
	//startDrag(lockCenter,left,top,right,bottom);
	//lockCenter - может принимать значения true или false, если lockCenter равен
	//true, то центр перетаскиваемого объекта всегда совпадать с курсором мышки.
	//Если false, то происходит обычное перетаскиавание, куда мышкой клацнули,
	//за то место и потянули.
	//left - координата левой границы, за которую объект выходить не будет;
	//top - координата верхней границы;
	//right - координата правой границы;
	//bottom - координата нижней границы.
	//Если вы хотите, что объект можно было перетаскивать безо всяких ограничений,
	//то можете просто не заполнять эти параметры. Если вам нужно, чтобы по
	//вертикали объект нельзя было передвигать, то значения top и bottom должны
	//быть одинаковыми. Если хотите, чтобы обхект нельзя было перетаскивать по
	//горизонтали, то left и right должны быть равны друг другу.
	//Кстати все эти параметры являются не обязательными, то есть, вы можете
	//просто записать startDrag() и перетаскивание объекта всёравно включится,
	//и никаких ограничений к этому перетаскиванию применено не будет.
	this.startDrag(false,this._x,120,this._x,885);
	//Создаём событие на ДВИЖЕНИЕ МЫШКИ.
	this.onMouseMove = function() {
		//Пропорционально тому, на сколько скроллинг сместился ниже начала оси Y
		//объект, который мы прокручиваем, должен смещаться вверх.
		_root.obj_mc._y = 120-_root.varDif*((this._y-120)/765);
	};
};
//После того, как пользователь отпустил кнопку мышки, мы должны остановить
//прокручивание.
scroll_mc.onRelease = scroll_mc.onReleaseOutside=function () {
	//Переходим на первый кадр скроллинга.
	this.gotoAndStop(1);
	//Останавливаем перетаскивание скроллинга
	this.stopDrag();
	//Удаляем событие на ДВИЖЕНИЕ МЫШКИ, с помощью которого и происходило
	//прокручивание объекта.
	delete this.onMouseMove;
};
Но как скролом и нажатием? чтобы всё в одном скрипте.


Последний раз редактировалось iNils; 30.10.2008 в 23:58.