![]() |
|
||||||||||
|
|||||
|
[+4 01.02.08]
[+4 09.04.08] Регистрация: Sep 2007
Сообщений: 124
|
Привет!
Подскажите что нужно дописать для прокрутки колёсиком 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, 0, this._x, 150);
//Создаём событие на ДВИЖЕНИЕ МЫШКИ.
this.onMouseMove = function() {
//Пропорционально тому, на сколько скроллинг сместился ниже начала оси Y
//объект, который мы прокручиваем, должен смещаться вверх.
_root.obj_mc._y = -_root.varDif*(this._y/150);
};
};
//После того, как пользователь отпустил кнопку мышки, мы должны остановить
//прокручивание.
scroll_mc.onRelease = scroll_mc.onReleaseOutside=function () {
//Переходим на первый кадр скроллинга.
this.gotoAndStop(1);
//Останавливаем перетаскивание скроллинга
this.stopDrag();
//Удаляем событие на ДВИЖЕНИЕ МЫШКИ, с помощью которого и происходило
//прокручивание объекта.
delete this.onMouseMove;
};
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 35
|
Есть такое событие, "onMouseWheel" называется. Примерчик:
__________________
qubstudio.com |
|
|||||
|
[+4 01.02.08]
[+4 09.04.08] Регистрация: Sep 2007
Сообщений: 124
|
А вместо трейса что вписывать?
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 35
|
Разбиратся в вашем скрипте мне не хочется, но принцип работы должен бить такой:
где varDelta - переменная, кратная 3 (3, 6, 9,...), которая изменяется при прокрутке скролла мышки
__________________
qubstudio.com Последний раз редактировалось Dzhav; 03.04.2008 в 15:34. |
|
|||||
|
[+4 01.02.08]
[+4 09.04.08] Регистрация: Sep 2007
Сообщений: 124
|
Чё то не пойму где именно его вставлять нужно(((
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 35
|
Что же ты ленивый такой?!
Stage.scaleMode = "noScale";
_root._quality = "BEST";
stop();
obj_mc.setMask(mask_mc);
varDif = obj_mc._height-mask_mc._height;
scroll_mc.onPress = function() {
this.gotoAndStop(2);
this.startDrag(false, this._x, 0, this._x, 150);
this.onMouseMove = function() {
_root.obj_mc._y = -_root.varDif*(this._y/150);
};
};
scroll_mc.onRelease = scroll_mc.onReleaseOutside=function () {
this.gotoAndStop(1);
this.stopDrag();
delete this.onMouseMove;
};
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(varDelta:Number) {
_root.obj_mc._y += varDelta*5;
_root.scroll_mc._y -= varDelta*5;
};
Mouse.addListener(mouseListener);
__________________
qubstudio.com |
|
|||||
|
[+4 01.02.08]
[+4 09.04.08] Регистрация: Sep 2007
Сообщений: 124
|
Большое спасибо!.......только вот....при прокручивании колеса скролл уходит за заданные приделы....((
|
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Ну ставьте проверку на заданные пределы, и скрольте объект, только если он находится в заданой области.
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 35
|
Поставь в функцию "onMouseWheel" ограничения, которые не давали бы клипу изменять свое положение, если его значение _y больше 0 или меньше за -varDif
__________________
qubstudio.com |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:56. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|