PDA

Просмотр полной версии : Сразу тянуть невиденный бегунок


NilovSerge
30.03.2007, 19:38
Всем привет!
Подскажите, пожалуйста. У меня есть бегунок и полоска. И бегунок таскается по этой полоске.
Бегунок изначально невиден. Хочется, чтобы при невидимом бегунке щелкнув мышкой на полоске не только
отобразить бегунок на месте щелчка, но и СРАЗУ бегунок забегал за мышкой. А пока что получается :
По щелчку мышки в событии onPress я отображаю бегунок и делаю ему startDrag.
Я должен отпустить мышку.
Только повторным щелчком на бегунке я начинаю его тянуть...
Очень не хочется отпускать мышку а лишний раз щелкать... Можно ли такое сделать? Если да то как ?

vadja
30.03.2007, 21:35
k - это твой бегунок

k._alpha = 30;
k.onPress = function(){
k._alpha = 100;
k.startDrag(false);
}
k.onMouseUp = function(){
k._alpha = 30;
k.stopDrag();
}

Kikasso
30.03.2007, 21:45
k - это твой бегунок

k._alpha = 30;
k.onPress = function(){
k._alpha = 100;
k.startDrag(false);
}
k.onMouseUp = function(){
k._alpha = 30;
k.stopDrag();
}
onMouseUp это где?

vadja
30.03.2007, 22:30
все во фрейм, ну или можешь на сам бегунок повесить, это не сложно, включай мозги =)

Kikasso
30.03.2007, 22:42
vadja, зачем мне мозги если у меня есть хелп? А в хелпе есть поиск. Вот сам попробуй и поймешь, с чем onMouseUp едят.

UPD:
Я к тому, что это событие вызывается, где бы ни была мышка, каждый раз когда юзер щелкает кнопкой. Тут оно еще прокатит, но в какой-нибудь момент можно нарваться. Так что или классический способ:
k.onRelease = k.onReleaseOutside = function(){
k._alpha = 30;
k.stopDrag();
}
Тут надо обрабатывать onReleaseOutside, потому что некоторые хитрые пользователи курсор в сторону уводят и там отпускают.
Или переопределять обработчики:
k._alpha = 30;
function kOnMouseUp(){
k._alpha = 30;
k.stopDrag();
k.onMouseUp = null;
}
k.onPress = function(){
k._alpha = 100;
k.startDrag(false);
k.onMouseUp = kOnMouseUp;
}
Ну или Mouse.addListener()

vadja
31.03.2007, 02:29
ишь, и сам все нашел, молодец! =)
чем мой код не понравился, до сих пор не допер (какраз такой для объектов типа бегунка и надо использовать, или я че не так понял), ну да ладно, не обязательно отвечать.

vadja, зачем мне мозги если у меня есть хелп? А в хелпе есть поиск.

правильно, зачем лишний раз напрягаться, када есть F1.

форум + хелп заменяют мозги :bb: ура, товарищи!

Kikasso
31.03.2007, 03:42
чем мой код не понравился, до сих пор не допер
Объясняю: события onMouseDown и onMouseUp срабатывают каждый раз, когда пользователь кливает мышкой, причем в любом месте флешки, а не только над объектом. Тестовый файл работает, все ура, вы делаете приложение в котором 20 ползунков, и все они одновременно отрабатывают каждый onMouseUp. В данном случае каждый ползунок в тысячный раз скажет stopDrag() и присвоит себе альфу 30, а если сценарий отпускания ползунка посложнее? Звякнет колокольчик, где-то что-то мигнет... Да хотя бы на курсор - мувиклип, вы кликаете, курсор отваливается.. А ползунка в кадре может вообще и не быть при этом видно.
Вот собственно и все, что я имею против onMouseUp для мувиклипа.

vadja
31.03.2007, 18:06
а условие if никогда не использовал?

в вопросе ОДИН бегунок, так что для одного бегунка мой код вполне подходит, а твое "если" вообще неуместно, потомучто я тоже могу написать типа "а если вдруг землетрясение, а у тя onMouseUp, а если вдруг инопланетяне прилетят, а у тебя на кнопке onMouseDown", не дела это все...

Kikasso
31.03.2007, 23:09
Неправильный подход. Если что-то делаешь, пусть хоть инопланетяне прилетят - все должно работать.
Станартная ситуация: текстовое поле с прокрутчиком спрятано, невидимо или убрано за пределы сцены, так вот onMouseDown и onMouseUp все равно срабатывают.

vadja
01.04.2007, 13:35
что ты мне доказать пытаешься?) то, что эти функции рабатывают глобально? так я знаю.

я специально это использовал, т.к. попробуй даже этот скролл броузера справа, нажми на бегунок, уведи мышку в сторону и отпусти, прокрутка остановится! такой же эффект должен быть и с любым другим бегунком, поэтому и onMouseUp в моем коде, про onMouseDown не я начал говорить... =)

кароче мне надоела эта тема.