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: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors