|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
|
Скроллинг со слайдером останавливающийся на позициях
Здравствуйте!
Помогите пожалуйста со скроллингом! Сделал скроллинг со слайдером проматывающим 3 изображения, и требуется сделать так, чтобы при отпускании слайдер (и соответственно прокручиваемый контент) останавливался в ближайшей из 3-х позиций... (возможно плавно останавливаясь =) ) Никак не могу найти как это сделать.. прикрепил исходник - буду очень признателен за помощь! |
|
|||||
Модрон-ветеринар
|
Решение состоит не в том, чтобы при отпускании ползунка (onRelease) проверять, к которой фиксированной позиции он ближе всего находится, а в том, чтобы вычислять саму эту позицию, и устанавливать туда скроллер.
Допустим три позции ползунка имеют координаты 0, 300, 600 (то есть шаг = 300). Тогда примерно так: 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. Исходник вашего пример у меня не открылся, но на самом деле тут мне проще свое накидать для объяснения. Сам пример во вложении:
__________________
Идите первым! Последний раз редактировалось mooncar; 19.03.2011 в 17:04. |
|
|||||
Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
|
mooncar, cпасибо большое, как раз то что нужно!
Мне бы ещё привязать прокручивающийся контент к этим остановкам, а то он цепляется только в момент Drag'a за слайдер.. Я подставил свои значения, drag практически также сделан, вот мой код: 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); }; |
|
|||||
Модрон-ветеринар
|
Можете пересохранить для CS3?
__________________
Идите первым! |
|
|||||
Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
|
Конечно, вот!
Мне бы ещё сделать чтобы он сам начинал прокручиваться по позициям при простое =))) Как привязать к таймеру я умею, а вот само движение не понимаю как создать...) |
|
|||||
Модрон-ветеринар
|
Не разобрались еще? в чем текущая трудность, если что, поподробнее?
__________________
Идите первым! |
|
|||||
Регистрация: Mar 2011
Адрес: H20
Сообщений: 4
|
Нет ещё, никак.. к сожалению в AS я не силён.
Попробовал скопировать функцию останавливающую ползунок на прокручиваемый контент, контент стал останавливаться в нужном положении, но только после отпускания и затем движения мыши! Последний раз редактировалось KA4MAN; 21.03.2011 в 16:38. |
Часовой пояс GMT +4, время: 12:18. |
|
« Предыдущая тема | Следующая тема » |
Теги |
drag-and-drop , скроллинг |
Опции темы | |
Опции просмотра | |
|
|