Loading:


    Fajerwerki w trzech wymiarach - Fireworks 3D [ ActionScript 3 ]

    Skrypt tworzy animowane fajerwerki w trzech wymiarach, które po doleceniu do ziemi odbijają się od niej.

     

    Wersja On-line:

     

     

     



    Napisz Artyku³

    Listing

    //KOD DLA KLASY Fajerwerki3D.as

    package {
            import flash.display.Sprite;
            import flash.display.StageAlign;
            import flash.display.StageScaleMode;
            import flash.events.Event;
            import flash.events.KeyboardEvent;
            import flash.ui.Keyboard;
           
            [SWF(backgroundColor=0x000000)]
            public class Fajerwerki3D extends Sprite
            {
                    private var pilki:Array;
                    private var iloscPilek:uint = 100;
                    private var fl:Number = 250;
                    private var vpX:Number = stage.stageWidth / 2;
                    private var vpY:Number = stage.stageHeight / 2;
                    private var grawitacja:Number = 0.2;
                    private var podloga:Number = 200;
                    private var odbicie:Number = -0.6;
                   
                    public function Fajerwerki3D()
                    {
                            init();
                    }
                   
                    private function init():void
                    {
                            stage.align = StageAlign.TOP_LEFT;
                            stage.scaleMode = StageScaleMode.NO_SCALE;
                           
                            pilki = new Array();
                            for(var i:uint = 0; i < iloscPilek; i++)
                            {
                                    var pilka:Pilka3D = new Pilka3D(3, Math.random() * 0xffffff);
                                    pilki.push(pilka);
                                    pilka.ypos = -100;
                                    pilka.vx = Math.random() * 6 - 3;
                                    pilka.vy = Math.random() * 6 - 6;
                                    pilka.vz = Math.random() * 6 - 3;
                                    addChild(pilka);
                            }
                            addEventListener(Event.ENTER_FRAME, onEnterFrame);
                    }
                   
                    private function onEnterFrame(event:Event):void
                    {
                            for(var i:uint = 0; i < iloscPilek; i++)
                            {
                                    var pilka:Pilka3D = pilki[i];
                                    move(pilka);
                            }
                            sortZ();
                    }
                   
                    private function move(pilka:Pilka3D):void
                    {
                            var radius:Number =  pilka.radius;
                           
                            pilka.vy += grawitacja;
                            pilka.xpos += pilka.vx;
                            pilka.ypos += pilka.vy;
                            pilka.zpos += pilka.vz;
                           
                            if(pilka.ypos > podloga)
                            {
                                    pilka.ypos = podloga;
                                    pilka.vy *= odbicie;
                            }
                           
                            if(pilka.zpos > -fl)
                            {
                                    var scale:Number = fl / (fl + pilka.zpos);
                                    pilka.scaleX = pilka.scaleY = scale;
                                    pilka.x = vpX + pilka.xpos * scale;
                                    pilka.y = vpY + pilka.ypos * scale;
                                    pilka.visible = true;
                            }
                            else
                            {
                                    pilka.visible = false;
                            }
                    }
                   
                    private function sortZ():void
                    {
                            pilki.sortOn("zpos", Array.DESCENDING | Array.NUMERIC);
                            for(var i:uint = 0; i < iloscPilek; i++)
                            {
                                    var pilka:Pilka3D = pilki[i];
                                    setChildIndex(pilka, i);
                            }
                    }
            }
    }


    //KOD DLA KLASY Pilka.as

    package {
            import flash.display.Sprite;
           
            public class Pilka extends Sprite {
                    public var radius:Number;
                    private var color:uint;
                    public var vx:Number = 0;
                    public var vy:Number = 0;
                    public var mass:Number = 1;
                   
                    public function Pilka(radius:Number=40, color:uint=0xff0000) {
                            this.radius = radius;
                            this.color = color;
                            init();
                    }
                    public function init():void {
                            graphics.beginFill(color);
                            graphics.drawCircle(0, 0, radius);
                            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