Search code examples
actionscript-3flasherror-handling

Actionscript 3 - ReferenceError: Error #1065: Variable addFrameScript is not defined


I am getting this error :

ReferenceError: Error #1065: Variable addFrameScript is not defined. at survival()

I'm having the problem when I run this code :

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.display.*;
    import flash.media.SoundMixer;
    import flash.media.SoundTransform;

    public class survival extends Sprite {
        public var ground:ground_mc = new ground_mc();
        public var environment:environment_mc = new environment_mc();
        public var player:player_mc = new player_mc();
        public var monster:monster_mc = new monster_mc();
        public var light:Sprite=new Sprite  ;
        public var battery:battery_mc = new battery_mc();

        public var key_pressed:int=0;
        public var radius:int=8;
        public var player_speed:int=2;
        public var monster_speed:int=1;
        public var torch_power:int=150;
        public var torch_step:int = 100;
        public var torch_angle:int=60;
        public var torch_angle_step:int=35;
        public var up,down,left,right:Boolean=false;
        public var flicker=0;
        public var count:int;
        public var sec:int;
        public var torchBattery:int = 100;

        var topLeft:Boolean = true;
        var topRight:Boolean = false;
        var bottomLeft:Boolean = false;
        var bottomRight:Boolean = false;

        public function survival():void {
            addChild(ground);
            addChild(environment);
            addChild(light);
            addChild(player);
            addChild (battery);
            addChild(monster);

            player.x=250;
            player.y=200;
            battery.x=321;
            battery.y=29;
            environment.y = 0;
            environment.x = 0;

            ground.mask=light;
            addEventListener(Event.ENTER_FRAME,on_enter_frame);
            addEventListener(Event.ENTER_FRAME,on_enter_frame2);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, on_key_down);
            stage.addEventListener(KeyboardEvent.KEY_UP, on_key_up);
        }

        public function on_enter_frame(e:Event):void {
            if (up) {
                environment.y+=player_speed;
                ground.y+=player_speed;
                monster.y+=player_speed;
            }
            if (down) {
                environment.y-=player_speed;
                ground.y-=player_speed;
                monster.y-=player_speed;
            }
            if (left) {
                environment.x+=player_speed;
                ground.x+=player_speed;
                monster.x+=player_speed;
            }
            if (right) {
                environment.x-=player_speed;
                ground.x-=player_speed;
                monster.x-=player_speed;
            }
            if (environment.collisions.hitTestPoint(player.x, player.y+radius, true)) {
                environment.y+=player_speed;
                ground.y+=player_speed;
                monster.y+=player_speed;
            }
            if (environment.collisions.hitTestPoint(player.x, player.y-radius, true)) {
                environment.y-= player_speed;
                ground.y-= player_speed;
                monster.y-= player_speed;
            }
            if (environment.collisions.hitTestPoint(player.x-radius, player.y, true)) {
                environment.x-= player_speed;
                ground.x-= player_speed;
                monster.x-= player_speed;
            }
            if (environment.collisions.hitTestPoint(player.x+radius, player.y, true)) {
                environment.x+= player_speed;
                ground.x+= player_speed;
                monster.x+= player_speed;
            }

            var dist_x:Number=player.x-mouseX;
            var dist_y:Number=player.y-mouseY;
            var angle:Number=- Math.atan2(dist_x,dist_y);
            player.rotation=to_degrees(angle);
            light.graphics.clear();
            if (Math.random()*100>flicker) {
                light.graphics.beginFill(0xffffff, 100);
                light.graphics.moveTo(player.x, player.y);
                for (var i:int=0; i<=torch_angle; i+=(torch_angle/torch_angle_step)) {
                    ray_angle = to_radians((to_degrees(angle)-90-(torch_angle/2)+i));
                    for (var j:int=1; j<=torch_step; j++) {
                        if (environment.collisions.hitTestPoint(player.x+(torch_power/torch_step*j)*Math.cos(ray_angle), player.y+(torch_power/torch_step*j)*Math.sin(ray_angle), true)) {
                            break;
                        }
                    }
                    light.graphics.lineTo(player.x+(torch_power/torch_step*j)*Math.cos(ray_angle), player.y+(torch_power/torch_step*j)*Math.sin(ray_angle));
                }
                light.graphics.lineTo(player.x, player.y);
                light.graphics.endFill();
            }

            if (torchBattery > 0) {
                count += 1;
                if (count >= 30) {
                    count = 0;
                    sec += 1;
                }

                if (sec >= 2) {
                    sec = 0;
                    flicker += 1;
                    torchBattery -= 1;
                        changeMovement();
                }
            }

            battery.battery.text = "Torch Battery: " + torchBattery + "%";


            var theDistance:Number = distance(monster.x, player.x, monster.y, player.y);


            var myVolume:Number = 2-(0.004* theDistance); 
            var Volume:Number = myVolume;
            if (Volume < 0) {
                Volume = 0;
            }
            SoundMixer.soundTransform = new SoundTransform(Volume);

            trace(theDistance);

            if (distance < 100) {
                removeEventListener(Event.ENTER_FRAME,on_enter_frame);
                removeEventListener(Event.ENTER_FRAME,on_enter_frame2);
                stage.removeEventListener(KeyboardEvent.KEY_DOWN, on_key_down);
                stage.removeEventListener(KeyboardEvent.KEY_UP, on_key_up);

                removeChild(ground);
                removeChild(environment);
                removeChild(light);
                removeChild(player);
                removeChild (battery);
                removeChild(monster);

                gotoAndStop(2);
            }
        }

        function on_enter_frame2 (e:Event) :void {
            if (environment.collisions.hitTestPoint(monster.x, monster.y+radius, true)) {
                monster.y -= monster_speed;
            }
            if (environment.collisions.hitTestPoint(monster.x,monster.y-radius, true)) {
                monster.y += monster_speed;
            }
            if (environment.collisions.hitTestPoint(monster.x-radius, monster.y, true)) {
                monster.x+=monster_speed;
            }
            if (environment.collisions.hitTestPoint(monster.x+radius, monster.y, true)) {
                monster.x -= monster_speed;
            }
            if (topLeft) {
                monster.x -= monster_speed;
                monster.y -= monster_speed;
            } else if (topRight) {
                monster.x += monster_speed;
                monster.y -= monster_speed;
            } else if (bottomLeft) {
                monster.x -= monster_speed;
                monster.y += monster_speed;
            } else if (bottomRight) {
                monster.x += monster_speed;
                monster.y += monster_speed;
            }


        }

        function changeMovement():void {
            var die2:Number = Math.floor(Math.random()*4);
            if (die2 == 1) {
                topLeft = true;
                topRight = false;
                bottomLeft = false;
                bottomRight = false;
            }
            if (die2 == 2) {
                topLeft = false;
                topRight = true;
                bottomLeft = false;
                bottomRight = false;
            }
            if (die2 == 3) {
                topLeft = false;
                topRight = false;
                bottomLeft = true;
                bottomRight = false;
            }
            if (die2 == 4) {
                topLeft = false;
                topRight = false;
                bottomLeft = false;
                bottomRight = true;
            }
        }

        public function on_key_down(e:KeyboardEvent):void {
            switch (e.keyCode) {
                case 37 :
                    left=true;
                    break;
                case 38 :
                    up=true;
                    break;
                case 39 :
                    right=true;
                    break;
                case 40 :
                    down=true;
                    break;
                /*case 49 :
                    torch_power++;
                    break;
                case 50 :
                    torch_power--;
                    break;*/
            }
        }
        public function on_key_up(e:KeyboardEvent):void {
            switch (e.keyCode) {
                case 37 :
                    left=false;
                    break;
                case 38 :
                    up=false;
                    break;
                case 39 :
                    right=false;
                    break;
                case 40 :
                    down=false;
                    break;
            }
        }
        public function to_radians(n:Number):Number {
            return (n*0.0174532925);
        }
        public function to_degrees(n:Number):Number {
            return (n*57.2957795);
        }


        function distance(x1:Number, x2:Number,  y1:Number, y2:Number): Number {
            var dx:Number = x1-x2;
            var dy:Number = y1-y2;
            return Math.sqrt(dx * dx + dy * dy);
        }
    }
}

On my timeline I have a blank keyframe with the sound effect of a music box playing, and a second frame with the animated jumpscare. The game is that you're in a bird's eye view of a person with a torch walking through a maze. The 'monster' moves around the maze and you must stay away from it. As it gets closer, the music box that is playing will get louder. Also, your torch only has a certain amount of battery. As the battery reduces, the torch will flicker more untill it eventually stops working. It worcked fine until I tried to make the jumpscare. This is all the coding in the game.
In the 'Compiler Errors' it also states:

 /Users/ethan/Documents/Flash Stuff/Flash Stuff [from macbook]/survival/survival.as, Line 164   Warning: 1060: Migration issue: The method gotoAndStop is no longer supported.  For more information, see MovieClip.gotoAndStop()..

Any suggestions or help I'll be very grateful.


Solution

  • Sprite Class doesn't have gotoAndStop method. This method implemented only in MovieClip class. So, you should replace

    public class survival extends Sprite {

    with

    public class survival extends MovieClip {