Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 1,2 > Помогите с ползунком


Автор: acdcee 3.1.2008, 18:15
У меня есть две картинки с фотошопа конвернутые в button (Convert symbol)

одна кнопка к примеру поле ограничитель 
вторая кнопка ползунок

позунок двигаетца от 140 до 170 по горизонтальным координатам (startDrag(this,true,140,39,170,39))

У меня вопрос, как сделать так что бы от перво начальной позиции ползунка при перемещении в право к примеру значение перменной x_coor увеличивалось на 10 от 0 до 100 и на оборот при перемещении ползунка от конечной позиции уменьшалось на 10 от 100 до 0

Такое реализовано в Медиа Контроллере

Есть ли у кнопки такое событие как mousemove или что нить подобное??


Я в таком деле начинающий, перемещение то я реалезовал, ползунок идет строго но не как не получается реализовать то что см. выше написаное


Буду очень признателен за помощь и разъеснения проблемы

Автор: acdcee 4.1.2008, 21:11
Помогите с этим вопросом плиззз, я сеня весь день себе голову ломал, почти сломал а ничего не получилось  smile 

Автор: Maksys 5.1.2008, 22:16
StartDrag 
и 
stopDrag
это события у объктов есть...  ща накидаю пример

Автор: Maksys 5.1.2008, 22:50
Ну вот нашел как это делаеться с регулятором левого и правого динамика
Код

var bar_width:Number = 200;
this.createEmptyMovieClip("bar_mc", this.getNextHighestDepth());
with (bar_mc) {
    lineStyle(4, 0x000000);
    moveTo(0, 0);
    lineTo(bar_width+4, 0);
    lineStyle(0, 0x000000);
    moveTo((bar_width/2)+2, -8);
    lineTo((bar_width/2)+2, 8);
}
bar_mc._x = 100;
bar_mc._y = 100;

this.createEmptyMovieClip("knob_mc", this.getNextHighestDepth());
with (knob_mc) {
    lineStyle(0, 0x000000);
    beginFill(0xCCCCCC);
    moveTo(0, 0);
    lineTo(4, 0);
    lineTo(4, 10);
    lineTo(0, 10);
    lineTo(0, 0);
    endFill();
}
knob_mc._x = bar_mc._x+(bar_width/2);
knob_mc._y = bar_mc._y-(knob_mc._height/2);

knob_mc.left = knob_mc._x-(bar_width/2);
knob_mc.right = knob_mc._x+(bar_width/2);
knob_mc.top = knob_mc._y;
knob_mc.bottom = knob_mc._y;

knob_mc.onPress = function() {
    this.startDrag(false, this.left, this.top, this.right, this.bottom);
};
knob_mc.onRelease = panSound;
knob_mc.onReleaseOutside = panSound;

function panSound():Void {
    this.stopDrag();
    var multiplier:Number = 100/(this.right-this.left)*2;
    var pan:Number = (this._x-this.left-(bar_width/2))*multiplier;
    my_sound.setPan(pan);
    pan_txt.text = my_sound.getPan();
};

var my_sound:Sound = new Sound();
my_sound.loadSound("song.mp3", true);
this.createTextField("pan_txt", this.getNextHighestDepth(), knob_mc._x, knob_mc._y+knob_mc._height, 20, 22);
pan_txt.selectable = false;
pan_txt.autoSize = "center";
pan_txt.text = my_sound.getPan();

Автор: acdcee 5.1.2008, 23:19
Спасибо за помощь, очень признателен.
Получился у тебя Maksys,  не плохой регулятор баланса  smile 

Как и у тебя тока я сделал чуть по другому.
На OnMouseMove в MovieClip объекте (подложка которая конвернута в MovieClip)
Код

//регулатор - ползунок
var vol_src:mx.controls.Button;
// сам муви клипер имя его к примеру sound_field 

//поехали :)

//xCol переменная в которой заложин диапазон правда он ограничен к примеру если кнопка по 
//иксу начинается на 120 то предел ее 147 тогда считывается от 0 до 100
var xCol:Number = (((vol_src._x-20.95)*0.4)-40)*10;
//var soundMedia:Sound = new Sound();
vol_src.onPress = function() {
                this._y = this.volY;
    startDrag(this, true, 120, 30, 147, 30);
    this.origY = this._y;
    volParam.onMouseMove = function() {
        xCol = (((vol_src._x-20.95)*0.4)-40)*10;
        if (xCol>=0 && xCol<=101) {
            var vol:Number = parseInt(xCol.toString(), 10);
            soundMedia.setVolume(vol);
        }
        return true;
    };
};
vol_src.onRelease = function() {
    stopDrag();
    volParam.onMouseMove = function() {
    return false;
    };
    this._y = this.origY;
};



Пример не очень может быть но работает и громкость плавная

У меня другой вот вопрос терь, к примеру я ставлю прогресс бар чтобы посмотреть сколько времени идет трек. Через setInerval по одной секунде все работает нормально
Но если переключить на другой трек тогда все сбиваеца, т.е трек переключается а вот время со старого остаеца, можно ли как нить тут исправить это??? т.е что бы при переключении треков время на ноль уходило и заного начинала отсчитывать!!!!


и еще один такой момент у меня переменная определена не на кнопки а на фрайме, к примеру var n:Number = 100; то можно ли ее как нить в кнопку перенести???

Добавлено через 7 минут и 6 секунд
Но var xCol:Number = (((vol_src._x-20.95)*0.4)-40)*10; работает тогда когда координата vol_src._x начинает на 120 

Автор: Maksys 5.1.2008, 23:47
acdcee, ты задаешь очень глупые вопросы, кабуд-то не читал документацию по программированию
1. зачем юзать сет интервал? для этого в классе Sound есть методы duration (длина трека в мс) и position (текущая позиция в мс)
2. чтобы передать данные объекту в AS это делаеться легко:
Код

var cifra:Number=10;
knopa_btn.timer=cifra;

http://livedocs.adobe.com/flash/9.0/main/00002125.html

Автор: acdcee 6.1.2008, 01:30
Код

trace(soundMidia.duration);


показывает ноль

Ладно буду разбиратся

Автор: Maksys 6.1.2008, 01:39
ты ее юзаешь после полной загрузки мп3шки?

Автор: acdcee 6.1.2008, 02:07
Спасибо все понял.... постараюсь больше тупых и глупых вопросов не задавать  smile  smile  smile

Добавлено через 1 минуту и 19 секунд
да сначала писал mysound.loadSound("1.mp3",false)

а потом mysound.position and mysound.duration

Автор: Maksys 7.1.2008, 06:26
Нужно отловить событие о том, что загрузка завершена:
Код

// create a new Sound object
var my_sound:Sound = new Sound();
// if the sound loads, play it; if not, trace failure loading
my_sound.onLoad = function(success:Boolean) {
if (success) {
my_sound.start();
trace(my_sound.duration());
status_txt.text = "Sound loaded";
} else {
status_txt.text = "Sound failed";
}
};
// load the sound
my_sound.loadSound("song1.mp3", true);
http://livedocs.adobe.com/flash/9.0/main/00002137.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)