Skrypt tworzy suwak reagujący na ruch myszy, tworzy animacje przesuwania się po torze oraz odbija się od granic toru, gdy do takich dojedzie. Wyświetlana jest tutaj również procentowe położenie suwaka względem toru.
Przykład On-line:
Aby skrypt zadziałał należy utworzyć pusty klip filmowy o wymiarach jakie suwak mieć pownien, 2 klipy filmowe: jeden suwaka o nazwie suwak_mc, oraz jeden toru o nazwie: trasa_mc. Musimy mieć również dynamiczne pole tekstowe o nazwie wartosc_txt.
Nasze początkowe współrzędne dla suwaka to 98 pikseli oraz jego prawa granica jest w punkcie 449 pikseli. Wartości te można zmienić w na początku skryptu w zmiennych o nazwach lewo oraz prawo
Listing
//////////// KONTROLER SKRYPTU /////////////
///////////////////////////////////////////
//określ maksymalne granice X dla suwaka,
//dla lewej i prawej strony
//////////////////////////////////////////
var odbicia:Object = {lewo: 98, prawo: 449};
//skrypt pobrany ze strony: http://Funkcje.net
//////////////NIE DO EDYCJI /////////////////
//pozycje suwaka, zapamiętane
var aktualnyX:Number = suwak_mc.x;
var ostatniX:Number = suwak_mc.x;
//prędkość poruszania sie suwaka
var vx:Number = 0;
var przeciagany:Boolean = false;
//różnica pomiędzy położeniami
var offset:Number;
suwak_mc.buttonMode = true;
//obsługa akcji
addEventListener(Event.ENTER_FRAME, petla);
addEventListener(MouseEvent.MOUSE_UP, zwolnienie_myszy);
suwak_mc.addEventListener(MouseEvent.MOUSE_DOWN, nacisniecie_myszy);
//wyświetlanie oraz reagowanie na zmiany
function petla(e:Event):void {
if(przeciagany) {
//ostatnie położenie X staje się aktualnym, które
//później zamieniamy na położenie myszy, wtedy odejmujemy
//wartość myszyX od ostatniego położenie X
ostatniX = aktualnyX;
aktualnyX = mouseX;
//vx to nasza różnica pomiędzy aktualnym a ostatnim położeniem X
vx = aktualnyX - ostatniX;
}else{
//jeśli suwak jest przesuwany wtedy jego prędkość jest
//zwiększana
suwak_mc.x += vx;
}
//ustawianie granic dla suwaka
if(suwak_mc.x <= odbicia.lewo){
suwak_mc.x = odbicia.lewo;
vx *= -1;
}
else if(suwak_mc.x >= odbicia.prawo) {
suwak_mc.x = odbicia.prawo;
vx *= -1;
}
//prędkość początkowa
vx *= 0.95;
//wyświetlenie wartości procentowej na podstawie granic suwaka
wartosc_txt.text = Math.round((suwak_mc.x-odbicia.lewo)/(odbicia.prawo-odbicia.lewo)*100) + "%";
}
function nacisniecie_myszy(e:MouseEvent):void {
przeciagany = true;
//oblicza odległość myszy od suwaka
offset = suwak_mc.mouseX;
addEventListener(MouseEvent.MOUSE_MOVE, poruszenie_myszy);
}
function poruszenie_myszy(e:MouseEvent):void {
//położenie suwaka zmienia się na na różnice pomiędyz położeniem myszy
//w x płaszczyźnie a różnicą pomiędzy położeniami myszy a suwaka
suwak_mc.x = mouseX - offset;
//ustawianie granic dla suwaka
if(suwak_mc.x <= odbicia.lewo)
suwak_mc.x = odbicia.lewo;
else if(suwak_mc.x >= odbicia.prawo)
suwak_mc.x = odbicia.prawo;
e.updateAfterEvent();
}
function zwolnienie_myszy(e:MouseEvent):void {
przeciagany = false;
//usuwanie przeciągania suwaka
removeEventListener(MouseEvent.MOUSE_MOVE, poruszenie_myszy);
}
Ranga: Administrator serwisu Punktów: 0