Форум 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)
-   -   Значение текстового поля, slider. (http://www.flasher.ru/forum/showthread.php?t=125222)

Const. 19.05.2009 12:31

Значение текстового поля, slider.
 
Вложений: 1
Здравствуйте!
Сделал форму on-line заказа в котором есть горизонтальный бегунок с текстовым полем - двигаешь бегунок, значение меняется от 0 - до 3млн рублей. Конечно значение меняется пропорционально значению _x бегунка, т.е где находится на горизонтальной линии бегунок, такое и значение (прошу прощенья что так подробно, просто чтобы понятно было).
Бегунок двигается на линии от 0 до 300 пиксилей.Все нормально, НО, необходимо сделать, так чтобы значение текстового поля менялось по разному, в зависимости от нахождения бегунка, т.е от 0 - до 50 000 с интервалом в 1000, от 50 000 до 100 000 с интервалом в 10 000, от 100 000 до 500 000 с интервалом в 50 000 и т.д. до 3млн.

Подскажите пожалуйста как этого можно добиться. Бегунок puck_mc, имя текстового поля совпадает с именем клипа slider и снабжается суффиксом _txt. Вот код:
Код:

puck_mc.onPress = function(){
        this.startDrag(true,0,0,300,0);
        this.onMouseMove = _onMouseMove;
};
_onMouseMove = function(){
        _parent[_name + "_txt"].text = this._x*10000;
        updateAfterEvent();
};
_parent[_name + "_txt"].onChanged = function(){
        puck_mc._x = Number(this.text);
};
puck_mc.onRelease = puck_mc.onReleaseOutside = function(){
        this.stopDrag();
};
_parent[_name + "_txt"].onChanged();

и исходник,
спасибо большое.

Const. 19.05.2009 14:01

Никто не подскажет? Возможно нужно какую-то мат.формулу прогрессии к значению _x. Помогите, наверняка сталкивался ктонибудь.

Wolsh 19.05.2009 14:23

Еслиб Вы подробно описали не что такое слайдер, а Вашу задачу - может кто и помог бы. Но Вы почемуто предпочли законччить "и т.д. до 3млн". Мало того, положение бегунка Вы измеряете не в пикселах, а в значении которое хотите получить - остроумно, но вот тому кто захотел бы это реализовать, непонятно.
Поэтому просто скажу что делать - смотрите положение бегунка, и если оно меньше такого-то но больше такого-то, округляете по шагу для этого интервала и умножаете его на столько-то .

Const. 19.05.2009 14:32

Wolsh, прошу прощенья, что не так выразил свои мысли, однако вы все поняли верно.
Необходимо изменять значение текстового поля в зависимости от местоположения
клипа puck_mc по x-координате.
Чтобы при _x от 0 до 50 значение текстового поля изменялось с интервалом 1, при _x от 50 до 100 с интервалом 10, при _x от 100 до 300 с интервалом 50.
Хочется понять принцип по которому это можно сделать, поэтому и написал и.т.д, чтоб не загружать мозг. Спасибо.

Wolsh 19.05.2009 15:29

И как Вы за 200 пикселов с шагом 50 дойдете до 3 000 000 ??? По описанной здесь схеме крайнее положение - 10550.

Добавлено через 26 минут
Вот Вам вариант Вашей ф-ии, вроде понятно что я делаю, но значение тут доходит только до 2 805 550. Надоело подбирать, а математикой я не очень владею)))) Дальше сами.
Код:

_onMouseMove = function(){
        var sX:Number = this._x;
        var kX:Number = this._x;
        if(sX>50 && sX<=100)
        {
                kX=50+10*(sX-50);
        }
        if(sX>100 && sX<=150)
        {
                kX=550+100*(sX-100);
        }
        if(sX>150 && sX<=200)
        {
                kX=550+5000+1000*(sX-150);
        }
        if(sX>200 && sX<=250)
        {
                kX=550+5000+50000+5000*(sX-200);
        }
        if(sX>250)
        {
                kX=550+5000+50000+250000+50000*(sX-250);
        }
        _parent[_name + "_txt"].text = kX;
        updateAfterEvent();
};



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

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