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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.05.2010, 14:17
palsany4 вне форума Посмотреть профиль Отправить личное сообщение для palsany4 Найти все сообщения от palsany4
  № 1  
Ответить с цитированием
palsany4

Регистрация: Nov 2008
Сообщений: 31
По умолчанию проблема скролинга с помощью колеса

после нескольких прокрутов ползунок (scrol_mc) начинает безумствовать, шаг получается уже не 9 а гораздо больше. Сперва всю полосу можно было за 17 движение колеса, потом стает за 7, потом вообще за 3... В чем ошибка, не понимаю...
спасибо.
Код AS1/AS2:
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function (wheel) { 
	if (wheel < 0) {
		if (scrol_mc._y <= 576) {
			scrol_mc._y = scrol_mc._y + 9;}
}
 
	else {		
		if (scrol_mc._y >= 9) {
			scrol_mc._y = scrol_mc._y - 9;}
	}
};
Mouse.addListener(mouseListener);
if (scrol_mc._y > 576) { scrol_mc._y = 576};
if (scrol_mc._y < 9) { scrol_mc._y = 9};

Старый 26.05.2010, 14:32
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Проверил ваш код. Никакого безумства не заметил. Единственное что, упростил бы слегка:
Код AS1/AS2:
var speed:Number = 3;
var minY:Number = 9;
var maxY:Number = 576;
 
Mouse.addListener(this);
scroll_mc._y = truncate(minY, maxY, scrol_mc._y);
 
function onMouseWheel(delta):Void
{
	scroll_mc._y = truncate(minY, maxY, scroll_mc._y + speed * delta);
}
 
function truncate(min:Number, max:Number, n:Number):Number
{
	return Math.max(min, Math.min(max, n));
}

Старый 26.05.2010, 14:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Я так подозреваю, что вы пишите на таймлайне и в кадр с кодом заходите несколько раз, тогда каждый заход подписывает вас еще раз на событие от колесика мыши. И на одно движение приходится несколько вызовов обработчика события.
Код AS1/AS2:
var step:Number = 9;
var topLimit:Number = 9;
var bottomLimit:Number = 576;
this.onMouseWheel = function (wheel:Number) {
	trace ("q")
	if (wheel < 0) {
		if (scrol_mc._y < bottomLimit) {
			scrol_mc._y += step;
		} else if (scrol_mc._y > bottomLimit) {
			scrol_mc._y = bottomLimit
		}
	} else {
		if (scrol_mc._y > topLimit) {
			scrol_mc._y -= step;
		} else if (scrol_mc._y < topLimit) {
			scrol_mc._y = topLimit
		}
	}
};
Mouse.addListener (this);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 26.05.2010, 15:04
palsany4 вне форума Посмотреть профиль Отправить личное сообщение для palsany4 Найти все сообщения от palsany4
  № 4  
Ответить с цитированием
palsany4

Регистрация: Nov 2008
Сообщений: 31
to udaaff, код красивый, но не работает
to iNils, stop (); в начале кода - проблема решена. Спасибо!

Старый 26.05.2010, 15:19
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
palsany4, scroll потому что с двумя l, потому и не работает.

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

Регистрация: Nov 2008
Сообщений: 31
действительно, не заметил. Все класс! Какой проницательный контингент форума, чудо!


Последний раз редактировалось palsany4; 26.05.2010 в 16:04.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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