Często spotykanym i potrzebnym elementem aplikacji jest suwak, którego przesuwanie w poziomie lub pionie pozwala wybrać wartość z zadanego zakresu, natomiast wybrana wartość służy do sterowania innym obiektem lub skryptem.
Suwak stworzymy w niezależnym MovieClipie (MC) tak, aby można było go stosować wielokrotnie w jednym projekcie, bez konieczności duplikowania MC w bibliotece. Tworzymy w tym celu MC, nazywamy go prowadnica_mc i rysujemy w nim poziomą linię o dowolnej długości. Współrzędne x i y linii leżą na wartościach 0.
Ten MC będzie decydował o zakresie przemieszczania się uchwytu suwaka, a jego długość nie będzie miała znaczenia dla wyniku zwróconego przez suwak. Następnie tworzymy drugi MC o nazwie uchwyt_mc, rysujemy w nim kwadrat o bokach 10px (ustawiamy go na środku obszaru edycyjnego).
Przypomnę, że za dokładne ustawienie położenia obiektu odpowiada panel Align [Ctrl + k] oraz wartości w polach X i Y panelu Properties. Teraz tworzymy MC o nazwie suwak_mc. Ten MC będzie naszym suwakiem, czyli będzie przechowywał w sobie poprzednio zrobione MC i skrypt sterujący. Tworzymy w nim trzy warstwy, najniższą nazywamy prowadnica, środkową uchwyt, a górną as.
W 1 klatce warstwy prowadnica, nanosimy z biblioteki MC prowadnica_mc i ustawiamy na współrzędnych x=0 i y=0. Klikamy na tym MC i w panelu Properties w polu
this.dlugoscPrzesuniecia = Math.abs(this.dlugosc == undefined ? 100 : !isNaN(this.dlugosc) ? this.dlugosc : 100);this.skalaObliczen = Math.abs(this.skala == undefined ? 100 : !isNaN(this.skala) ? this.skala : 100);this.wartoscPoczatkowa = Math.abs(this.wartosc == undefined ? 0 : !isNaN(this.wartosc) ? this.wartosc : 0);this.wartoscPoczatkowa > this.skalaObliczen ? this.wartoscPoczatkowa = this.skalaObliczen : null;prowadnica_mc._width = this.dlugoscPrzesuniecia;uchwyt_mc._x = (this.wartoscPoczatkowa / this.skalaObliczen) * prowadnica_mc._width;this.wynik = this.wartoscPoczatkowa;uchwyt_mc.onPress = function() {this.startDrag(true, 0, 0, prowadnica_mc._width, 0);this.onMouseMove = function() {this._parent.wynik = Math.ceil(this._x / prowadnica_mc._width * this._parent.skalaObliczen);updateAfterEvent();};};uchwyt_mc.onMouseUp = function() {this.stopDrag();delete this.onMouseMove;};
this.dlugoscPrzesuniecia = Math.abs(this.dlugosc == undefined ? 100 : !isNaN(this.dlugosc) ? this.dlugosc : 100);this.skalaObliczen = Math.abs(this.skala == undefined ? 100 : !isNaN(this.skala) ? this.skala : 100);this.wartoscPoczatkowa = Math.abs(this.wartosc == undefined ? 0 : !isNaN(this.wartosc) ? this.wartosc : 0);
this.wartoscPoczatkowa > this.skalaObliczen ? this.wartoscPoczatkowa = this.skalaObliczen : null;
prowadnica_mc._width = this.dlugoscPrzesuniecia;
uchwyt_mc._x = (this.wartoscPoczatkowa / this.skalaObliczen) * prowadnica_mc._width;
this.wynik = this.wartoscPoczatkowa;
uchwyt_mc.onPress = function() {this.startDrag(true, 0, 0, prowadnica_mc._width, 0);this.onMouseMove = function() {this._parent.wynik = Math.ceil(this._x / prowadnica_mc._width * this._parent.skalaObliczen);updateAfterEvent();};};
uchwyt_mc.onMouseUp = function() {this.stopDrag();delete this.onMouseMove;};
suwak1.dlugosc = 200;suwak1.skala = 300;suwak1.wartosc = 50;this.onEnterFrame = function() {odczyt_txt.text = suwak1.wynik;};
suwak1.dlugosc = 100;suwak1.skala = 100;suwak1.wartosc = 50;this.onEnterFrame = function() {jakis_mc._width = suwak1.wynik;};
Marek Redesiuk
Autor prowadzi stronę .
