In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

flash on 2011-7-24

Get Adobe Flash player
by nibru 23 Jul 2011
    Embed
/**
 * Copyright nibru ( http://wonderfl.net/user/nibru )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zO8X
 */

package 
{
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    public class Arnyekos extends Sprite
    {

        public var Falak:Array;
        public var Nap:Object;
        public var Logo:Shape;
        public var Arnyek:Shape;

        public var EgysegTav:Number;
        public var EszakiSz:Number;

        public var Placc:Sprite;
        public var AlapNegyzet:Shape;
        public var Leiras:TextField;
        
        ///////napotBeallit(////////////////////////////////////////
        public function napotBeallit(ora:Number, nap:Number):void
        {
            var oSz:Number = (ora - 12)/12 * Math.PI;
            var eSz:Number = (23.45 / 180 * Math.PI) * Math.sin(2*Math.PI * ((284+nap) / 365.25));
            Nap.mSz = Math.asin(Math.sin(eSz) * Math.sin(EszakiSz) + Math.cos(oSz) * Math.cos(eSz) * Math.cos(EszakiSz));
            Nap.sSz = Math.asin((Math.sin(oSz) * Math.cos(eSz)) / Math.cos(Nap.mSz))
            
            oSz += .01
            Nap.mSz2 = Math.asin(Math.sin(eSz) * Math.sin(EszakiSz) + Math.cos(oSz) * Math.cos(eSz) * Math.cos(EszakiSz));
            Nap.sSz2 = Math.asin((Math.sin(oSz) * Math.cos(eSz)) / Math.cos(Nap.mSz2))
            
            if(Nap.sSz2 < Nap.sSz)
            {
                Nap.sSz *= -1
                var ujSzog:Number = Math.PI / 2 + (Math.PI / 2 - Math.abs(Nap.sSz))
                ujSzog *= Math.abs(Nap.sSz) / Nap.sSz * -1
                Nap.sSz = ujSzog
            }
            
            
            //Math.asin(2*Math.sin(oSz) * Math.cos(eSz)) - Math.PI / 2

            Leiras.textColor = 0xFFFFFF
            Leiras.text = "óra: " + ora;
            Leiras.appendText("\n nap: " + nap);
            Leiras.appendText("\n oSz: " + oSz / Math.PI * 180 + "°");
            Leiras.appendText("\n eSz: " + eSz / Math.PI * 180 + "°");
            Leiras.appendText("\n  ");
            Leiras.appendText("\n Nap.mSz: " + Nap.mSz / Math.PI * 180 + "°");
            Leiras.appendText("\n  ");
            Leiras.appendText("\n Math.sin(oSz) = "+ Math.sin(oSz));
            Leiras.appendText("\n Math.cos(eSz) = "+ Math.cos(eSz));
            Leiras.appendText("\n (Math.sin(oSz) * Math.cos(eSz)) = "+ ((Math.sin(oSz) * Math.cos(eSz))));
            Leiras.appendText("\n Math.cos(Nap.mSz) = "+ (Math.cos(Nap.mSz)));
            Leiras.appendText("\n (Math.sin(oSz) * Math.cos(eSz)) / Math.cos(Nap.mSz) = "+ ((Math.sin(oSz) * Math.cos(eSz)) / Math.cos(Nap.mSz)));
            Leiras.appendText("\n Nap.sSz: " + Nap.sSz / Math.PI * 180 + "°");
            Leiras.appendText("\n Nap.sSz2: " + Nap.sSz2 / Math.PI * 180 + "°");
            Leiras.appendText("\n (Nap.sSz2 < Nap.sSz): " + (Nap.sSz2 < Nap.sSz));
            Leiras.appendText("\n  ");
            Leiras.appendText("\n EszakiSz: " + EszakiSz / Math.PI * 180 + "°");
            
            Nap.sSz -= Math.PI / 2
        }
        
        ///////pontotMond////////////////////////////////////////
        public function pontotMond(a:Array):Object
        {
            var eredmeny:Object = {};
            
            var r:Number = a[2] / Math.tan(Nap.mSz);
            
            eredmeny.x = a[0] + Math.cos(Nap.sSz) * r;
            eredmeny.y = a[1] + Math.sin(Nap.sSz) * r;
            
            return eredmeny;
        }

        public function Arnyekos():void
        {
            indit();
        }

        public function indit():void
        {
            Nap = {};
            Logo = new Shape  ;
            Arnyek = new Shape  ;
            Placc = new Sprite  ;
            AlapNegyzet = new Shape;
            
            Placc.graphics.beginFill(0x3311aa);
            Placc.graphics.drawRect(-stage.stageWidth/2, -stage.stageHeight/2, 
                                        stage.stageWidth, stage.stageHeight);
                                        
            AlapNegyzet.graphics.beginFill(0x000000);
            AlapNegyzet.graphics.drawRect(-Placc.width/12, -Placc.height/12, 
                                           Placc.width/6,   Placc.height/6);
            AlapNegyzet.x = Placc.x = stage.stageWidth / 2;
            AlapNegyzet.y = Placc.y = stage.stageHeight/2
                ;
            Leiras = new TextField  ;
            Leiras.width = 800;
            Leiras.height = 800;
            Leiras.wordWrap = true;
 
            EgysegTav = AlapNegyzet.width / 12;
            AlapNegyzet.visible = false;
            EszakiSz = 47.5 / 180 * Math.PI;
            addChild(Placc);
            addChild(Arnyek);
            addChild(Logo);
            addChild(Leiras);
            Falak = falakatMond();
            logotRajzol();
            addEventListener(MouseEvent.MOUSE_MOVE, egeretMozgat);
        }

        public function torles():void
        {
            removeEventListener(MouseEvent.MOUSE_MOVE, egeretMozgat);
            removeChild(Arnyek);
            removeChild(Logo);
            Logo = null;
            Arnyek = null;
        }

        public function egeretMozgat(e:Event):void
        {
            napotBeallit(stage.mouseX / Placc.width * 24, 
                             stage.mouseY / Placc.height * 365.25);
            render();
        }

        public function render():void
        {
            arnyekotRajzol();
            logotRajzol();
            addChild(Leiras);
        }

        public function arnyekotRajzol():void
        {
            var p:Object;
            Arnyek.graphics.clear();
            for (var i:int = 0; i < Falak.length; i++)
            {
                if ((i == Falak.length - 2 && Math.abs(Nap.sSz-Math.PI) < Math.PI/2) ||
                           (i == Falak.length - 1 && Math.abs(Nap.sSz-Math.PI) > Math.PI/2))
                {
                }
                else
                {
                    p = pontotMond(Falak[i][0]);
                    Arnyek.graphics.beginFill(0x333333);
                    Arnyek.graphics.moveTo(p.x, p.y);
                    for (var j:int = 1; j < Falak[i].length; j++)
                    {
                        p = pontotMond(Falak[i][j]);
                        Arnyek.graphics.lineTo(p.x, p.y);
                    }

                    p = pontotMond(Falak[i][0]);
                    Arnyek.graphics.lineTo(p.x, p.y);
                    Arnyek.graphics.endFill();
                }
            }
        }

        public function logotRajzol():void
        {
            var szin:int = 0x000000;//szurketMond(int(255 * (Nap.mSz / (Math.PI/2))))
            /*szin *= 200
                if(szin > 255){ szin = 255 }*/

            Logo.graphics.clear();
            for (var i:int = 0; i < 2; i++)
            {
                Logo.graphics.beginFill(szin);
                Logo.graphics.moveTo(Falak[i][0][0], Falak[i][0][1]);
                for (var j:int = 1; j < Falak[i].length; j++)
                {
                    Logo.graphics.lineTo(Falak[i][j][0], Falak[i][j][1]);
                }

                Logo.graphics.lineTo(Falak[i][0][0], Falak[i][0][1]);
                Logo.graphics.endFill();
            }
        }

        

        public function falakatFelszoroz():void
        {
            for (var i:int = 0; i < Falak.length; i++)
            {
                for (var j:int = 0; j < Falak[i].length; j++)
                {
                    for (var k:int = 0; k < Falak[i][j].length; k++)
                    {
                        Falak[i][j][k] *=  EgysegTav;
                    }
                }
            }
        }

        public function szurketMond(ertek:Number):int
        {
            var szin:* = [ertek];
            szin[1] = szin[0] % 16;
            szin[0] = int(szin[0] / 16);
            szin[2] = 0
                ;
            for (var i:int = 0; i < 6; i++)
            {
                szin[2] += szin[(i+1)%2] * Math.pow(16, i);
            }

            return szin[2];
        }

        public function falakatMond():Array
        {
            var e:Number = 6;
            var m1:Number = 4.25;
            var m2:Number = 3.5;
            var m3:Number = 3;
            var m4:Number = 2.9;
            var m5:Number = .75;
            var t1:Number = 6.6;
            var t2:Number = 4.2;
            var t3:Number = 1.2;
            var eredmeny:Array = [
            
                [[-e,-e,m1], [e,-e,m1-.02], [e,-e+t2,m2], [-e,-e+t1,m2]],    //t1
                [[-e,e-t3,m3], [e,e-t3,m3-.02], [e,e,m4-.02], [-e,e,m4]],    //t2
                
                
                [[e,-e,m1-.02], [e,-e+t2,m2], [e,-e+t2,0], [e,-e,0]],    //f1a
                [[e,e-t3,m3-.02], [e,e,m4-.02], [e,e,0], [e,e-t3,0]],    //f1b
                
                [[-e,e,m4], [e,e,m4-.02], [e,e,0], [-e,e,0]],    //f2
                
                [[-e,-e,m1], [-e,-e+t1,m2], [-e,-e+t1,0], [-e,-e,0]],    //f3a
                [[-e,e-t3,m3], [-e,e,m4], [-e,e,0], [-e,e-t3,0]],    //f3b
                
                [[-e,-e,m1], [e,-e,m1-.02], [e,-e,0], [-e,-e,0]],    //f4
                
                
                [[e,-e,m5], [e,e,m5], [e,e,0], [e,-e,0]],    //k1
                [[-e,-e,m5], [-e,e,m5], [-e,e,0], [-e,-e,0]]    //k2
                
                ];
            for (var i:int = 0; i < eredmeny.length; i++)
            {
                for (var j:int = 0; j < eredmeny[i].length; j++)
                {
                    for (var k:int = 0; k < eredmeny[i][j].length; k++)
                    {
                        eredmeny[i][j][k] *=  EgysegTav;
                    }
                    eredmeny[i][j][0] += Placc.width / 2
                    eredmeny[i][j][1] += Placc.height / 2
                }
            }

            return eredmeny;
        }
    }
}