Programmering‎ > ‎exempel‎ > ‎

externa klasser


Ett vanligt sätt att hantera större projekt i Flash är att lägga koden för separata delar i externa filer.
I detta exemplet så läggs att som har med rymdskeppet att göra i Ship.as och allt som har med bränslet att göra i Fuel.as


Ship.as

package {
    import flash.display.*;
    import flash.events.*;
    import flash.events.KeyboardEvent;
   
    public class Ship extends MovieClip {
        //håller redan på vilken tangent som är nedtryckt
        var leftArrow:Boolean = false;
        var rightArrow:Boolean = false;
        var upArrow:Boolean = false;
        var downArrow:Boolean = false;
       
        //hastighet
        var speed_x:Number = 0;
        var speed_y:Number = 0;
       
        var acc:Number = 1.5;
       
        //mängd bränsle
        public var fuel:int = 0;
       
        //kallas på när skeppet skapas
        function Ship() {
            //lyssnare för tangenter
            stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyPressedDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, this.keyPressedUp);
           
            this.addEventListener(Event.ENTER_FRAME, moveShip);
        }
       
        //anropas vid enter_frame
        function moveShip(e:Event) {
            //flyttar skeppet
            this.y += speed_y;
            this.x += speed_x;
       
            //ökar eller minskar hastigheten beroende av tengent
            if (leftArrow) {
                speed_x -= acc;
            }
            if (rightArrow) {
                speed_x += acc;
            }
            if (upArrow) {
                speed_y -= acc;
            }
            if (downArrow) {
                speed_y += acc;
            }
        }
       
        function keyPressedDown(e:KeyboardEvent) {
            //kontrollerar vilken tangent som eventet gäller
            if (e.keyCode == 37) {
                leftArrow = true;
            } else if (e.keyCode == 39) {
                rightArrow = true;
            }
            if (e.keyCode == 38) {
                upArrow = true;
            } else if (e.keyCode == 40) {
                downArrow = true;
            }
        }
       
        function keyPressedUp(e:KeyboardEvent) {
            //kontrollerar vilken tangent som eventet gäller
            if (e.keyCode == 37) {
                leftArrow = false;
            } else if (e.keyCode == 39) {
                rightArrow = false;
            }
            if (e.keyCode == 38) {
                upArrow = false;
            } else if (e.keyCode == 40) {
                downArrow = false;
            }
        }
    }
}


Fuel.as

package {
    //Importerar nödvändiga bibliotek
    import flash.display.*;
    import flash.events.*;
   
    //Deklarerar klassen, observerar namnet Fuel
    public class Fuel extends MovieClip {
        //Data knutet till objektet
        var speed_y:Number = 1.2;
       
        function Fuel() {
            addEventListener(Event.ENTER_FRAME, shipCollide);
        }
       
        function shipCollide(e:Event) {
            //flyttar dunken
            this.y += speed_y;
           
            //kontrollerar om dunken nuddar skeppet
            if (MovieClip(parent).ship.hitTestObject(this)) {
                //ökar spekkets bränslenivå
                MovieClip(parent).ship.fuel ++;
               
                //sätter det nya bränslevärdet i textfältet på scenen
                MovieClip(parent).fuel_txt.text = String(MovieClip(parent).ship.fuel);
               
                //tar bort lyssnare från bärnsledunken
                removeEventListener(Event.ENTER_FRAME, shipCollide);
                //spelar upp animationen som tar bort bränslet
                this.play();
            }
            else if(this.y > 300) {
                //om dunken har nått marken ska den tas bort från scenen
                removeEventListener(Event.ENTER_FRAME, shipCollide);
                parent.removeChild(this);
            }
        }
    }
}



ċ
Fuel.as
(1k)
Olof Olsson,
17 okt. 2008 01:21
ċ
Ship.as
(2k)
Olof Olsson,
17 okt. 2008 01:21
ċ
exempelpåexternklass.fla
(53k)
Olof Olsson,
17 okt. 2008 01:21
ċ
Olof Olsson,
17 okt. 2008 01:21
ċ
spelmedstatusbar.zip
(14k)
Olof Olsson,
24 okt. 2008 01:20
Comments