Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   ScrollPane, как отловить scrollDrag? (http://www.flasher.ru/forum/showthread.php?t=95800)

BorisL 16.05.2007 17:41

Здравствуйте,
столкнулся с проблемой: не могу разобраться как отловить начало/конец "таскания" контента в скроллпейне.

Заранее спасибо.

Неужели никто не сталкивался?:)

Может быть непонятно объяснил проблему:
есть scrollPane и есть необходимость отслеживать, когда пользователь проматывает содержимое.
Таких возможностей у пользователя две:
1. Использование скроллбаров, ловится без проблем, через:
Код:

on(scroll) {
    //...
}

2. Таскание контента мышью, при scrollDrag=true.
Дак вот вопрос как раз в том, как определить то, что пользователь потащил контент мышью?

Заранее спасибо;)

etc 17.05.2007 12:18

ScrollPane какой? v2, v3, flex?

BorisL 17.05.2007 12:40

Цитата:

Сообщение от __etc
ScrollPane какой? v2, v3, flex?

Простите, не уточнил, scrollPane v2

etc 17.05.2007 13:00

Документацию читать нынче не модно?
http://livedocs.adobe.com/flash/9.0/main/00003452.html

Почему нельзя проверять при scroll значение scrollDrag?

BorisL 17.05.2007 14:44

Цитата:

Сообщение от __etc
Документацию читать нынче не модно?
http://livedocs.adobe.com/flash/9.0/main/00003452.html

Читал, но боюсь, что здесь не указано как выявить начало перетаскивания контента мышкой за сам контент.
Цитата:

Сообщение от __etc
Почему нельзя проверять при scroll значение scrollDrag?

Можно, но зачем? Оно итак известно — "true".
Вопрос в том, как перехватить начало/конец "таскания за контент"

etc 17.05.2007 14:59

Хак:

Код:

sp.scrollDrag = true;
sp.spContentHolder.onPress = function() {
        this._parent.dispatchEvent({type:'dragStart'});
        this._parent.startDragLoop();
}
sp.spContentHolder.onRelease = sp.spContentHolder.onReleaseOutside = function() {
        this._parent.dispatchEvent({type:'dragEnd'});
        delete this.onMouseMove;
}

sp — ScrollPane. Появляются два новых события dragStart и dragEnd :D
После этого кода лучше не трогать scrollDrag.

BorisL 17.05.2007 15:57

Спасибо, попробовал, но вот такая кострукция:
Код:

main_pane.scrollDrag = true;
main_pane.spContentHolder.onPress = function() {
        this._parent.dispatchEvent({type:'dragStart'});
        this._parent.startDragLoop();
}
main_pane.spContentHolder.onRelease = main_pane.spContentHolder.onReleaseOutside = function() {
        this._parent.dispatchEvent({type:'dragEnd'});
        delete this.onMouseMove;
}

scrollListenter=new Object();
scrollListenter.dragEnd=function() {
trace("smth");
}

main_pane.addEventListener("dragEnd", scrollListenter);

не работает, равно как и просто на скроллпейне
Код:

on (dragEnd) {
        trace("bla");
}


etc 17.05.2007 21:17

Гм, ну тогда соберите нерабочий пример, я поправлю.

BorisL 18.05.2007 13:44

Спасибо, __etc,
начал собирать неработающий вариант и в нем все заработало, хотя в старом по прежнему тишина:)
В старом варианте не отрабатывается сам клик мышью, то есть код:
Код:

main_pane.spContentHolder.onRelease = main_pane.spContentHolder.onReleaseOutside = function() {
        trace("bla");
}

не к чему не приводит. Стоит просто копипастом перенести scrollPane и этот код в новый файл — все начинает работать... не могу разобраться почему может быть так...

BorisL 18.05.2007 14:05

Разобрался: просто scrollPane не успевал подгрузиться.
__etc, спасибо большое.


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

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