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

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

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

Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
Thumbs up Скроллинг со слайдером останавливающийся на позициях

Здравствуйте!
Помогите пожалуйста со скроллингом!

Сделал скроллинг со слайдером проматывающим 3 изображения, и требуется сделать так,
чтобы при отпускании слайдер (и соответственно прокручиваемый контент) останавливался в ближайшей
из 3-х позиций... (возможно плавно останавливаясь =) )

Никак не могу найти как это сделать.. прикрепил исходник - буду очень признателен за помощь!
Миниатюры
Нажмите на изображение для увеличения
Название: 4-help.jpg
Просмотров: 205
Размер:	9.7 Кб
ID:	26230  
Вложения
Тип файла: zip Archive.zip (891.0 Кб, 60 просмотров)

Старый 19.03.2011, 16:16
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Решение состоит не в том, чтобы при отпускании ползунка (onRelease) проверять, к которой фиксированной позиции он ближе всего находится, а в том, чтобы вычислять саму эту позицию, и устанавливать туда скроллер.

Допустим три позции ползунка имеют координаты 0, 300, 600 (то есть шаг = 300).
Тогда примерно так:

Код AS1/AS2:
import mx.transitions.Tween;
 
scroller.onPress = function  () 
{
	this.startDrag(false, 0, this._y, 600, this._y);
};
 
scroller.onRelease = scroller.onReleaseOutside = function()
{
	this.stopDrag();
	var pos:Number = Math.round(this._x / 300); //получаем ближайший номер позиции
	var setX:Number = pos * 300;
	var myTween:Tween = new Tween(this, '_x', mx.transitions.easing.Strong.easeOut, this._x, setX, 0.5, true);
};
Разумеется, насчет драга у вас реализация может быть иная, в этом примере вам главным образом нужно смотреть на вычисление и установку координаты ползунка при отпускании.
Для плавной (равнозамедленной) установки ползунка в полученную позицию используем класс Tween и тип easing'а - Strong.easeOut.
О них можно почитать в хелпе.

PS. Исходник вашего пример у меня не открылся, но на самом деле тут мне проще свое накидать для объяснения.

Сам пример во вложении:
Вложения
Тип файла: rar scroller.rar (8.3 Кб, 58 просмотров)
__________________
Идите первым!


Последний раз редактировалось mooncar; 19.03.2011 в 17:04.
Старый 19.03.2011, 18:30
KA4MAN вне форума Посмотреть профиль Отправить личное сообщение для KA4MAN Найти все сообщения от KA4MAN
  № 3  
Ответить с цитированием
KA4MAN

Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
mooncar, cпасибо большое, как раз то что нужно!

Мне бы ещё привязать прокручивающийся контент к этим остановкам,
а то он цепляется только в момент Drag'a за слайдер..

Я подставил свои значения, drag практически также сделан, вот мой код:
Код AS1/AS2:
Stage.scaleMode = "noScale";
_root._quality = "BEST";
import mx.transitions.Tween;
 
obj_mc.setMask(mask_mc);
var varDif:Number = obj_mc._width-mask_mc._width;
 
scroll_mc.onPress = function() {	
	this.gotoAndStop(2);	
	this.startDrag(false, 53, this._y, 595, this._y);	
	this.onMouseMove = function() {		
		_root.tempX = -_root.varDif*(this._x/550)+160;		
		speed = 0.7;
		setInterval(smoothscroll, 100); 
		function smoothscroll() { 
		if (_root.obj_mc._x <> _root.tempX) {
		_root.obj_mc._x = speed*obj_mc._x+(1-speed)*_root.tempX;
		}
		}
	};
};
 
scroll_mc.onRelease = scroll_mc.onReleaseOutside=function () {	
	this.gotoAndStop(1);	
	this.stopDrag();	
	delete this.onMouseMove;	
	var pos:Number = Math.round(this._x / 271);
	var setX:Number = pos * 271+53;
	var myTween:Tween = new Tween(this, '_x', mx.transitions.easing.Strong.easeOut, this._x, setX, 0.5, true);
 
};
На всякий случай прикрепил исходник и swf'ку
Вложения
Тип файла: zip 4help-2.zip (897.9 Кб, 51 просмотров)

Старый 19.03.2011, 19:46
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Можете пересохранить для CS3?
__________________
Идите первым!

Старый 19.03.2011, 20:24
KA4MAN вне форума Посмотреть профиль Отправить личное сообщение для KA4MAN Найти все сообщения от KA4MAN
  № 5  
Ответить с цитированием
KA4MAN

Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
Конечно, вот!

Мне бы ещё сделать чтобы он сам начинал прокручиваться по позициям при простое =)))
Как привязать к таймеру я умею, а вот само движение не понимаю как создать...)
Вложения
Тип файла: zip Archive-cs3.zip (43.9 Кб, 47 просмотров)

Старый 20.03.2011, 20:56
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не разобрались еще? в чем текущая трудность, если что, поподробнее?
__________________
Идите первым!

Старый 21.03.2011, 15:26
KA4MAN вне форума Посмотреть профиль Отправить личное сообщение для KA4MAN Найти все сообщения от KA4MAN
  № 7  
Ответить с цитированием
KA4MAN

Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
Нет ещё, никак.. к сожалению в AS я не силён.
Попробовал скопировать функцию останавливающую ползунок на прокручиваемый контент,
контент стал останавливаться в нужном положении, но только после отпускания и затем движения мыши!
Вложения
Тип файла: zip test2.zip (12.6 Кб, 51 просмотров)


Последний раз редактировалось KA4MAN; 21.03.2011 в 16:38.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
drag-and-drop , скроллинг
Опции темы
Опции просмотра

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

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


 


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


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