Форум 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)
-   -   Как задать шаг для ползунка (http://www.flasher.ru/forum/showthread.php?t=84796)

Whim 08.09.2006 12:13

Как задать шаг для ползунка
 
Я нарисовала линейку, на которой есть метки 1, 2, 3 и т.д. По этой линейке пользователь будет двигать ползунок выбирая значение. Как мне сделать, чтобы ползунок двигался строго по меткам, т.е. нельзя было установить его между метками, например, 4 и 5.
По нажатию мышкой по ползунку я начинаю StartDrag с ограничением, чтоб двигать можно было только по горизонтали в пределах линейки. А как установить шаг передвижения?:confused:

MINASTIS 08.09.2006 12:25

Попробуй сделать так. Хиттестом (а лучше координатами) задавать значение 1,2,3 и т.д., когда ползунок будет между цифрами. то есть разделить всю линейку на целые числа и в зависимости от положения ползунка выдавать целые же числа.

motor4ik 08.09.2006 12:50

короче алгоритм такой, шаг = сколько то пикселей, деля координату текущую на шаг, и округляя в нужную сторону получим координату шаговую )))

MINASTIS 08.09.2006 12:55

Один другого мудренее =))

Whim 08.09.2006 13:09

Цитата:

Сообщение от motor4ik
короче алгоритм такой, шаг = сколько то пикселей, деля координату текущую на шаг, и округляя в нужную сторону получим координату шаговую )))

Размер шага я сама могу вычислить. Я ведь спрашиваю не КАКОЙ шаг установить, а КАК его установить...

motor4ik 08.09.2006 13:20

...надо всего-лишь подумать...алгоритм я написал...

пользуетесь startDrag наверное...его отменяем теперь пишем функцию
Код:

polzunok.onEnterFrame=function():Void{

if (_root._ymouse>max){
  this._y=max;
}else if(_root._ymouse<min){
  this._y=min;
}else{
  this._y=Math.floor(_root._ymouse/shag);
}
};


miramax 08.09.2006 13:21

Код:

createEmptyMovieClip('roll', 1)
roll.lineStyle(0);
roll.beginFill(0xff0000);
roll.lineTo(0, 20);
roll.lineTo(20, 20)
roll.lineTo(20, 0)
roll.lineTo(0, 0)
function snapDrag(){
        step = 30 //шаг
        roll._x = 300;
        roll._y = Math.round(_ymouse/step)*step 
        roll._y -= roll._height        /2        ///для центровки по оис у
}
setInterval(snapDrag, 30)


Whim 08.09.2006 14:10

Цитата:

Сообщение от miramax
Код:

createEmptyMovieClip('roll', 1)
roll.lineStyle(0);
roll.beginFill(0xff0000);
roll.lineTo(0, 20);
roll.lineTo(20, 20)
roll.lineTo(20, 0)
roll.lineTo(0, 0)
function snapDrag(){
        step = 30 //шаг
        roll._x = 300;
        roll._y = Math.round(_ymouse/step)*step 
        roll._y -= roll._height        /2        ///для центровки по оис у
}
setInterval(snapDrag, 30)


передвигается нормально - по делениям. Вот только за мышкой не успевает:(

iNils 08.09.2006 14:11

Повесить snapDrag() на событие onMouseMove

motor4ik 08.09.2006 14:12

резвая у вас мышка )


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

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