Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вывести процент пройденного расстояния слайдера startDrag (http://www.flasher.ru/forum/showthread.php?t=142794)

Dr_Bra 30.07.2010 19:01

вывести процент пройденного расстояния слайдера startDrag
 
Всем привет, помогите разобраться:

Есть прямоугольник по которому можно таскать слайдер, есть текстовое поле в которое необходимо помещать процент, в зависимости на сколько слайдер перемещен.
То есть начальная точка 0% слайдер стоит в левом крае прямоугольника, как только мы начали слайдер тащить к правой части прямоугольника проценты начали увеличиваться, слайдер уперся в правый край прямоугольника, показываем 100%.

Вот такой код я использую:
Код AS3:

stop();
 
var _bounds=new Rectangle(skrollLine_mc.x, skrollLine_mc.y, 152, 0);
 
sliderBTN_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag)
function drag(evt:MouseEvent):void
{
        sliderBTN_mc.startDrag(false, _bounds);
}
 
stage.addEventListener(MouseEvent.MOUSE_UP, dragSTOP)
function dragSTOP(evt:MouseEvent):void
{
        sliderBTN_mc.stopDrag();
}
 
sliderBTN_mc.dinamyc_txt.text = "кол-во %";


Хемуль 30.07.2010 19:02

2 Dr_Bra:
А где у sliderBTN_mc точка регистрации?

Wolsh 30.07.2010 19:06

Просто использовать обычный драг здесь, простите, неуместно. Надо слушать MOUSE_MOVE после нажатия на движок и таскать его за мышью в обработчике. В этом же обработчике вы будете знать координаты и соотвественно проценты. Имхо, драг это из "дизайнерского" наследия, наподобие Буттона.

Хемуль 30.07.2010 19:11

2 Wolsh:
Так ведь можно и использовать startDrag, и слушать MOUSE_MOVE, и получать координаты.

Dr_Bra 30.07.2010 19:13

вот так получается показывать от 20 до 127
Код AS3:

sliderBTN_mc.addEventListener(Event.ENTER_FRAME, showPercent);
function showPercent(evt:Event):void
{
        sliderBTN_mc.dinamyc_txt.text = sliderBTN_mc.x;
}


Хемуль 30.07.2010 19:17

2 Dr_Bra:
Может просто задействуете стандартный компонент и заскинуете его в соответствии с задачей?

Dr_Bra 30.07.2010 19:22

стандартный компонент – не спортивно ) решение должно быть!

Хемуль 30.07.2010 19:25

2 Dr_Bra:
Почему "не спортивно"? Нормальный набор свойств, методов и событий.
Ну а решение есть, причём очень простое. Но если бы вы прикрепили сюда FLA-файл версии CS3 со своим слайдером, вам бы скорее помогли.

Dr_Bra 30.07.2010 19:41

исходник выложил, посттарадся сохранить в cs3 http://***********/18719003

veisss 30.07.2010 20:09

может так
Код AS3:

var percent:Number = (sliderBTN_mc.x - 20) / (127-20);


Хемуль 30.07.2010 20:11

2 Dr_Bra:
Что-то типа:
Код AS3:

stop();
 
sliderBTN_mc.x = skrollLine_mc.x;
sliderBTN_mc.y = skrollLine_mc.y;
 
var _bounds:Rectangle = new Rectangle(skrollLine_mc.x, skrollLine_mc.y, skrollLine_mc.width - sliderBTN_mc.handle_btn.width, 0);
 
sliderBTN_mc.handle_btn.addEventListener(MouseEvent.MOUSE_DOWN, onThumbMouseDown);
function onThumbMouseDown(event:MouseEvent):void
{
        sliderBTN_mc.startDrag(false, _bounds);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
}
 
function drag(event:MouseEvent):void
{
        sliderBTN_mc.dinamyc_txt.text = Math.round(100 * (sliderBTN_mc.x - _bounds.x) / _bounds.width) + "%";
}
 
stage.addEventListener(MouseEvent.MOUSE_UP, onThumbMouseUp);
function onThumbMouseUp(event:MouseEvent):void
{
        sliderBTN_mc.stopDrag();
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, drag);       
}

Изменения:
- У handle_btn точка регистрации в верхнем левом углу.
- У handle_btn на кадре up состояния такой же прямоугольник, как на hit, только полностью прозрачный.

Только вы там таймер на 30-м кадре запускаете на 5 повторов. Это нормально.

Dr_Bra 30.07.2010 20:17

Спасибо за помощь, Хемуль!

Добавлено через 18 часов 49 минут
а что касается таймера, я считал что в скобках первое число –миллисекунды, а второе их колличество (1000, 10) значит десять секунд


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

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