Loading:


    Rzucanie obiektem po scenie, z różnymi siłami + grawitacja ActionScript 3

    Skrypt tworzy obiekt kuli, którą za pomocą kliknięcia, przesunięcia jej i zwolnienia klawisza myszy za symuluje efekt rzucania. Siła grawitacji również została tutaj nadana jako wektor jednostajny.

     

    Przykład wykorztuje dwa pliki: Pilka.as oraz Rzucanie.as.

     

    Należy zaimportować plik Rzucanie.as.

     

    Wersja On-line:

     



    Napisz Artyku³

    Listing

    //Kod dla pliku Rzucanie.as

    package
    {
            import flash.display.Sprite;
            import flash.display.StageAlign;
            import flash.display.StageScaleMode;
            import flash.events.Event;
            import flash.events.MouseEvent;
           
            public class Rzucanie extends Sprite
            {
                    private var pilka:Pilka;
                    private var vx:Number;
                    private var vy:Number;
                    private var bounce:Number = -0.7;
                    private var gravity:Number = .5;
                    private var stareX:Number;
                    private var stareY:Number;
                   
                    public function Rzucanie()
                    {
                            init();
                    }
                   
                    private function init():void
                    {
                            stage.scaleMode = StageScaleMode.NO_SCALE;
                            stage.align=StageAlign.TOP_LEFT;

                            pilka = new Pilka();
                            pilka.alpha = 0.8;
                            pilka.x = stage.stageWidth / 2;
                            pilka.y = stage.stageHeight / 2;
                            vx = Math.random() * 10 - 5;
                            vy = -10;
                            addChild(pilka);
                            pilka.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
                            addEventListener(Event.ENTER_FRAME, onEnterFrame);
                    }
                   
                    private function onEnterFrame(event:Event):void
                    {
                            vy += gravity;
                            pilka.x += vx;
                            pilka.y += vy;
                            var left:Number = 0;
                            var right:Number = stage.stageWidth;
                            var top:Number = 0;
                            var bottom:Number = stage.stageHeight;
                           
                            if(pilka.x + pilka.promien > right)
                            {
                                    pilka.x = right - pilka.promien;
                                    vx *= bounce;
                            }
                            else if(pilka.x - pilka.promien < left)
                            {
                                    pilka.x = left + pilka.promien;
                                    vx *= bounce;
                            }
                            if(pilka.y + pilka.promien > bottom)
                            {
                                    pilka.y = bottom - pilka.promien;
                                    vy *= bounce;
                            }
                            else if(pilka.y - pilka.promien < top)
                            {
                                    pilka.y = top + pilka.promien;
                                    vy *= bounce;
                            }
                    }
                   
                    private function onMouseDown(event:MouseEvent):void
                    {
                            stareX = pilka.x;
                            stareY = pilka.y;
                            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
                            pilka.startDrag();
                            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
                            addEventListener(Event.ENTER_FRAME, sprawdzaniePredkosci);
                    }
                   
                    private function onMouseUp(event:MouseEvent):void
                    {
                            stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
                            pilka.stopDrag();
                            removeEventListener(Event.ENTER_FRAME, sprawdzaniePredkosci);
                            addEventListener(Event.ENTER_FRAME, onEnterFrame);
                    }
                   
                    private function sprawdzaniePredkosci(event:Event):void
                    {
                            vx = pilka.x - stareX;
                            vy = pilka.y - stareY;
                            stareX = pilka.x;
                            stareY = pilka.y;
                    }
            }
    }



    //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