Loading:


Suwak odbijający się od granic toru - ActionScript 3

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



Napisz Artyku³

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);
}




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38523
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors