Loading:


    Efekt animacji łańcucha w ActionScript 3

    Przykład ukazuje efekt animacji elementów w jednym łańcuchu, reagującej na pozycję kursora myszy.

     

    Kod buduje łańcuch z trzech elementów, które odwołują się do swojego rodzica lub kursora myszki (w przyapdku 1 elementu).

     

    Wersja On-line:

     



    Napisz Artyku³

    Listing

    //Kod dla pliku Lancuch.as

    package
    {
            import flash.display.Sprite;
            import flash.events.Event;
           
            public class Lancuch extends Sprite
            {
                    private var pilka0:Pilka;
                    private var pilka1:Pilka;
                    private var pilka2:Pilka;
                    private var odbicie:Number = 0.1;
                    private var tarcie:Number = 0.8;
                    private var grawitacja:Number = 5;
                   
                    public function Lancuch()
                    {
                            init();
                    }
                   
                    private function init():void
                    {
                            pilka0 = new Pilka(20);
                            addChild(pilka0);
                            pilka1 = new Pilka(20);
                            addChild(pilka1);
                            pilka2 = new Pilka(20);
                            addChild(pilka2);
                            addEventListener(Event.ENTER_FRAME, onEnterFrame);
                    }

                   
                    private function onEnterFrame(event:Event):void
                    {
                            movePilka(pilka0, mouseX, mouseY);
                            movePilka(pilka1, pilka0.x, pilka0.y);
                            movePilka(pilka2, pilka1.x, pilka1.y);
                           
                            graphics.clear();
                            graphics.lineStyle(1);
                            graphics.moveTo(mouseX, mouseY);
                            graphics.lineTo(pilka0.x, pilka0.y);
                            graphics.lineTo(pilka1.x, pilka1.y);
                            graphics.lineTo(pilka2.x, pilka2.y);
                    }
                   
                    private function movePilka(pilka:Pilka, targetX:Number, targetY:Number):void
                    {
                            pilka.vx += (targetX - pilka.x) * odbicie;
                            pilka.vy += (targetY - pilka.y) * odbicie;
                            pilka.vy += grawitacja;
                            pilka.vx *= tarcie;
                            pilka.vy *= tarcie;
                            pilka.x += pilka.vx;
                            pilka.y += pilka.vy;
                    }
            }
    }


    //Kod dla pliku Pilka.as

    package {
            import flash.display.Sprite;
           
            public class Pilka extends Sprite {
                    private var promien:Number;
                    private var kolor:uint;
                   
                    public function Pilka(promien:Number=40, kolor:uint=0xff0000) {
                            this.promien = promien;
                            this.kolor = kolor;
                            init();
                    }
                   
                    public function init():void {
                            graphics.beginFill(kolor);
                            graphics.drawCircle(0,0, promien);
                            graphics.endFill();
                    }
            }
    }




    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