Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.04.2008, 18:25
Futury вне форума Посмотреть профиль Отправить личное сообщение для Futury Найти все сообщения от Futury
  № 1  
Ответить с цитированием
Futury
[+4 01.02.08]
[+4 09.04.08]
 
Аватар для Futury

Регистрация: 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;
};

Старый 02.04.2008, 20:00
Dzhav вне форума Посмотреть профиль Отправить личное сообщение для Dzhav Найти все сообщения от Dzhav
  № 2  
Ответить с цитированием
Dzhav
 
Аватар для Dzhav

Регистрация: Jan 2008
Сообщений: 35
Есть такое событие, "onMouseWheel" называется. Примерчик:
Код:
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(varDelta:Number) {
        trace("Движение колёсика "+varDelta);
};
Mouse.addListener(mouseListener);
__________________
qubstudio.com

Старый 03.04.2008, 11:30
Futury вне форума Посмотреть профиль Отправить личное сообщение для Futury Найти все сообщения от Futury
  № 3  
Ответить с цитированием
Futury
[+4 01.02.08]
[+4 09.04.08]
 
Аватар для Futury

Регистрация: Sep 2007
Сообщений: 124
А вместо трейса что вписывать?

Старый 03.04.2008, 13:10
Dzhav вне форума Посмотреть профиль Отправить личное сообщение для Dzhav Найти все сообщения от Dzhav
  № 4  
Ответить с цитированием
Dzhav
 
Аватар для Dzhav

Регистрация: Jan 2008
Сообщений: 35
Разбиратся в вашем скрипте мне не хочется, но принцип работы должен бить такой:
Код:
mouseListener.onMouseWheel = function(varDelta:Number) {
	obj_mc._y += varDelta*5;
	scroll_mc._y -= varDelta*5;				
	};
где varDelta - переменная, кратная 3 (3, 6, 9,...), которая изменяется при прокрутке скролла мышки
__________________
qubstudio.com


Последний раз редактировалось Dzhav; 03.04.2008 в 15:34.
Старый 03.04.2008, 14:34
Futury вне форума Посмотреть профиль Отправить личное сообщение для Futury Найти все сообщения от Futury
  № 5  
Ответить с цитированием
Futury
[+4 01.02.08]
[+4 09.04.08]
 
Аватар для Futury

Регистрация: Sep 2007
Сообщений: 124
Чё то не пойму где именно его вставлять нужно(((

Старый 03.04.2008, 15:33
Dzhav вне форума Посмотреть профиль Отправить личное сообщение для Dzhav Найти все сообщения от Dzhav
  № 6  
Ответить с цитированием
Dzhav
 
Аватар для Dzhav

Регистрация: 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

Старый 03.04.2008, 16:22
Futury вне форума Посмотреть профиль Отправить личное сообщение для Futury Найти все сообщения от Futury
  № 7  
Ответить с цитированием
Futury
[+4 01.02.08]
[+4 09.04.08]
 
Аватар для Futury

Регистрация: Sep 2007
Сообщений: 124
Большое спасибо!.......только вот....при прокручивании колеса скролл уходит за заданные приделы....((

Старый 03.04.2008, 17:13
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 8  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Ну ставьте проверку на заданные пределы, и скрольте объект, только если он находится в заданой области.

Старый 03.04.2008, 17:19
Dzhav вне форума Посмотреть профиль Отправить личное сообщение для Dzhav Найти все сообщения от Dzhav
  № 9  
Ответить с цитированием
Dzhav
 
Аватар для Dzhav

Регистрация: Jan 2008
Сообщений: 35
Поставь в функцию "onMouseWheel" ограничения, которые не давали бы клипу изменять свое положение, если его значение _y больше 0 или меньше за -varDif
__________________
qubstudio.com

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.