Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9009381
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T02:10:40+00:00 2026-06-16T02:10:40+00:00

Making a touch based platform game based in actionscript 3 using Gary Rosenzweig’s game

  • 0

Making a touch based platform game based in actionscript 3 using Gary Rosenzweig’s game as a basis, all was going well until today, I’ve been trying to swap out floor objects etc without changing much of the actionscript at all and I have the following error.

ArgumentError: Error #2109: Frame label jump not found in scene jump.
at flash.display::MovieClip/gotoAndStop()
at PlatformGame/moveCharacter()[C:\Users\Michael\Desktop\platformGame\PlatformGame.as:418]
at PlatformGame/moveEnemies()[C:\Users\Michael\Desktop\platformGame\PlatformGame.as:314]
at PlatformGame/gameLoop()[C:\Users\Michael\Desktop\platformGame\PlatformGame.as:303]

This also seems to cause problems with collision detection.

The code is as follows. (not i have not changed the scene or label names from the originals but it still shows the error).

package {
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;
    import flash.utils.getTimer;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;

    public class PlatformGame extends MovieClip {
        // movement constants
        static const gravity:Number = .004;

        // screen constants
        static const edgeDistance:Number = 100;

        public var rightButton:SimpleButton;

        // object arrays
        private var fixedObjects:Array;
        private var otherObjects:Array;

        // hero and enemies
        private var hero:Object;
        private var enemies:Array;

        // game state
        private var playerObjects:Array;
        private var gameScore:int;
        private var gameMode:String = "start";
        private var playerLives:int;
        private var lastTime:Number = 0;



        // start game
        public function startPlatformGame() {
            playerObjects = new Array();
            gameScore = 0;
            gameMode = "play";
            playerLives = 3;
        }


        // start level
        public function startGameLevel() {

            // create characters
            createHero();
            addEnemies();

            // examine level and note all objects
            examineLevel();

            // add listeners
            this.addEventListener(Event.ENTER_FRAME,gameLoop);
            Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
            gamelevel["rButton"].addEventListener(TouchEvent.TOUCH_BEGIN,touchRight);
            gamelevel["rButton"].addEventListener(TouchEvent.TOUCH_END,touchRightReleased);
            gamelevel["lButton"].addEventListener(TouchEvent.TOUCH_BEGIN,touchLeft);
            gamelevel["lButton"].addEventListener(TouchEvent.TOUCH_END,touchLeftReleased);
            gamelevel["jButton"].addEventListener(TouchEvent.TOUCH_BEGIN,jump);
            gamelevel["jButton"].addEventListener(TouchEvent.TOUCH_END,jumpReleased);


            trace("hi"+gamelevel["rButton"]);

            // set game state
            gameMode = "play";
            addScore(0);
            showLives();
        }



        // start level
        public function startGameLevelHarder() {

            // create characters
            createHero();
            addHardEnemies();

            // examine level and note all objects
            examineLevel();


            // set game state
            gameMode = "play";
            addScore(0);
            showLives();
        }

        // start level
        public function startGameLevelHardest() {

            // create characters
            createHero();
            addHardestEnemies();

            // examine level and note all objects
            examineLevel();


            // set game state
            gameMode = "play";
            addScore(0);
            showLives();
        }

        // creates the hero object and sets all properties
        public function createHero() {
            hero = new Object();
            hero.mc = gamelevel.hero;
            hero.dx = 0.0;
            hero.dy = 0.0;
            hero.inAir = false;
            hero.direction = 0;
            hero.animstate = "stand";
            hero.walkAnimation = new Array(2,3,4,5,6,7,8);
            hero.animstep = 0;
            hero.jump = false;
            hero.moveLeft = false;
            hero.moveRight = false;
            hero.jumpSpeed = .8;
            hero.walkSpeed = .15;
            hero.width = 15.0;
            hero.height = 35.0;
            hero.startx = hero.mc.x;
            hero.starty = hero.mc.y;
        }




        // finds all enemies in the level and creates an object for each
        public function addEnemies() {
            enemies = new Array();
            var i:int = 1;
            while (true) {
                if (gamelevel["enemy"+i] == null) break;
                var enemy = new Object();
                enemy.mc = gamelevel["enemy"+i];
                enemy.dx = 0.0;
                enemy.dy = 0.0;
                enemy.inAir = false;
                enemy.direction = 1;
                enemy.animstate = "stand"
                enemy.walkAnimation = new Array(2,3,4,5);
                enemy.animstep = 0;
                enemy.jump = false;
                enemy.moveRight = true;
                enemy.moveLeft = false;
                enemy.jumpSpeed = 1.0;
                enemy.walkSpeed = .08;
                enemy.width = 30.0;
                enemy.height = 30.0;
                enemies.push(enemy);
                i++;
            }
        }

        // finds all enemies in the level and creates an object for each
        public function addHardEnemies() {
            enemies = new Array();
            var i:int = 1;
            while (true) {
                if (gamelevel["enemy"+i] == null) break;
                var enemy = new Object();
                enemy.mc = gamelevel["enemy"+i];
                enemy.dx = 0.0;
                enemy.dy = 0.0;
                enemy.inAir = false;
                enemy.direction = 1;
                enemy.animstate = "stand"
                enemy.walkAnimation = new Array(2,3,4,5);
                enemy.animstep = 0;
                enemy.jump = false;
                enemy.moveRight = true;
                enemy.moveLeft = false;
                enemy.jumpSpeed = 1.0;
                enemy.walkSpeed = .15;
                enemy.width = 56.0;
                enemy.height = 80.0;
                enemies.push(enemy);
                i++;
            }
        }


        // finds all enemies in the level and creates an object for each
        public function addHardestEnemies() {
            enemies = new Array();
            var i:int = 1;
            while (true) {
                if (gamelevel["enemy"+i] == null) break;
                var enemy = new Object();
                enemy.mc = gamelevel["enemy"+i];
                enemy.dx = 0.0;
                enemy.dy = 0.0;
                enemy.inAir = false;
                enemy.direction = 1;
                enemy.animstate = "stand"
                enemy.walkAnimation = new Array(2,3,4,5);
                enemy.animstep = 0;
                enemy.jump = false;
                enemy.moveRight = true;
                enemy.moveLeft = false;
                enemy.jumpSpeed = 1.0;
                enemy.walkSpeed = .25;
                enemy.width = 40.0;
                enemy.height = 40.0;
                enemies.push(enemy);
                i++;
            }
        }

        // look at all level children and note walls, floors and items
        public function examineLevel() {
            fixedObjects = new Array();
            otherObjects = new Array();
            for(var i:int=0;i<this.gamelevel.numChildren;i++) {
                var mc = this.gamelevel.getChildAt(i);

                // add floors and walls to fixedObjects
                if ((mc is Floor) || (mc is Wall) || (mc is ground1) || (mc is wall1) || (mc is ledge1) || (mc is ledge2) || (mc is rock) ||(mc is rocktip)) {
                    var floorObject:Object = new Object();
                    floorObject.mc = mc;
                    floorObject.leftside = mc.x;
                    floorObject.rightside = mc.x+mc.width;
                    floorObject.topside = mc.y;
                    floorObject.bottomside = mc.y+mc.height;
                    fixedObjects.push(floorObject);

                // add treasure, key and door to otherOjects
                } else if ((mc is Treasure) || (mc is Key) || (mc is Door) || (mc is Chest)) {
                    otherObjects.push(mc);
                }
            }
        }


        // note key presses, set hero properties
        public function touchRight(event:TouchEvent) {
            trace("touchRight");
            hero.moveRight = true;
        }

        public function touchRightReleased(event:TouchEvent) {
            hero.moveRight = false;
        }
        public function touchLeft(event:TouchEvent) {
            hero.moveLeft = true;
        }

        public function touchLeftReleased(event:TouchEvent) {
            hero.moveLeft = false;
        }

        public function jump(event:TouchEvent) {
            if (!hero.inAir) {
                    hero.jump = true;
                }
        }

        public function jumpReleased(event:TouchEvent) {
            if (!hero.inAir) {
                    hero.jump = false;
                }
        }
        // note key presses, set hero properties
        //public function keyDownFunction(event:KeyboardEvent) {
            //if (gameMode != "play") return; // don't move until in play mode

            //if (event.keyCode == 37) {
                //hero.moveLeft = true;
            //} else if (event.keyCode == 39) {
                //hero.moveRight = true;
            //} else if (event.keyCode == 32) {
                //if (!hero.inAir) {
                    //hero.jump = true;
                //}
            //}
        //}

        //public function keyUpFunction(event:KeyboardEvent) {
            //if (event.keyCode == 37) {
                //hero.moveLeft = false;
            //} else if (event.keyCode == 39) {
                //hero.moveRight = false;
            //}
        //}

        // perform all game tasks
        public function gameLoop(event:Event) {

            // get time differentce
            if (lastTime == 0) lastTime = getTimer();
            var timeDiff:int = getTimer()-lastTime;
            lastTime += timeDiff;

            // only perform tasks if in play mode
            if (gameMode == "play") {
                moveCharacter(hero,timeDiff);
                moveEnemies(timeDiff);
                checkCollisions();
                scrollWithHero();
            }
        }

        // loop through all enemies and move them
        public function moveEnemies(timeDiff:int) {
            for(var i:int=0;i<enemies.length;i++) {

                // move
                moveCharacter(enemies[i],timeDiff);

                // if hit a wall, turn around
                if (enemies[i].hitWallRight) {
                    enemies[i].moveLeft = true;
                    enemies[i].moveRight = false;
                } else if (enemies[i].hitWallLeft) {
                    enemies[i].moveLeft = false;
                    enemies[i].moveRight = true;
                }
            }
        }

        // primary function for character movement
        public function moveCharacter(char:Object,timeDiff:Number) {
            if (timeDiff < 1) return;

            // assume character pulled down by gravity
            var verticalChange:Number = char.dy*timeDiff + timeDiff*gravity;
            if (verticalChange > 15.0) verticalChange = 15.0;
            char.dy += timeDiff*gravity;

            // react to changes from key presses
            var horizontalChange = 0;
            var newAnimState:String = "stand";
            var newDirection:int = char.direction;
            if (char.moveLeft) {
                // walk left
                horizontalChange = -char.walkSpeed*timeDiff;
                newAnimState = "walk";
                newDirection = -1;
            } else if (char.moveRight) {
                // walk right
                horizontalChange = char.walkSpeed*timeDiff;
                newAnimState = "walk";
                newDirection = 1;
            }
            if (char.jump) {
                // start jump
                char.jump = false;
                char.dy = -char.jumpSpeed;
                verticalChange = -char.jumpSpeed;
                newAnimState = "jump";
            }

            // assume no wall hit, and hanging in air
            char.hitWallRight = false;
            char.hitWallLeft = false;
            char.inAir = true;

            // find new vertical position
            var newY:Number = char.mc.y + verticalChange;

            // loop through all fixed objects to see if character has landed
            for(var i:int=0;i<fixedObjects.length;i++) {
                if ((char.mc.x+char.width/2 > fixedObjects[i].leftside) && (char.mc.x-char.width/2 < fixedObjects[i].rightside)) {
                    if ((char.mc.y <= fixedObjects[i].topside) && (newY > fixedObjects[i].topside)) {
                        newY = fixedObjects[i].topside;
                        char.dy = 0;
                        char.inAir = false;
                        break;
                    }
                }
            }

            // find new horizontal position
            var newX:Number = char.mc.x + horizontalChange;

            // loop through all objects to see if character has bumped into a wall
            for(i=0;i<fixedObjects.length;i++) {
                if ((newY > fixedObjects[i].topside) && (newY-char.height < fixedObjects[i].bottomside)) {
                    if ((char.mc.x-char.width/2 >= fixedObjects[i].rightside) && (newX-char.width/2 <= fixedObjects[i].rightside)) {
                        newX = fixedObjects[i].rightside+char.width/2;
                        char.hitWallLeft = true;
                        break;
                    }
                    if ((char.mc.x+char.width/2 <= fixedObjects[i].leftside) && (newX+char.width/2 >= fixedObjects[i].leftside)) {
                        newX = fixedObjects[i].leftside-char.width/2;
                        char.hitWallRight = true;
                        break;
                    }
                }
            }

            // set position of character
            char.mc.x = newX;
            char.mc.y = newY;

            // set animation state
            if (char.inAir) {
                newAnimState = "";
            }
            char.animstate = newAnimState;

            // move along walk cycle
            if (char.animstate == "walk") {
                char.animstep += timeDiff/60;
                if (char.animstep > char.walkAnimation.length) {
                    char.animstep = 0;
                }
                char.mc.gotoAndStop(char.walkAnimation[Math.floor(char.animstep)]);

            // not walking, show stand or jump state
            } else {
                char.mc.gotoAndStop(char.animstate);
            }

            // changed directions
            if (newDirection != char.direction) {
                char.direction = newDirection;
                char.mc.scaleX = char.direction*1.35;
            }
        }

        // scroll to the right or left if needed
        public function scrollWithHero() {
            var stagePosition:Number = gamelevel.x+hero.mc.x;
            var rightEdge:Number = stage.stageWidth-edgeDistance;
            var leftEdge:Number = edgeDistance;
            if (stagePosition > rightEdge) {
                gamelevel.x -= (stagePosition-rightEdge);
                gamelevel["rButton"].x += (stagePosition-rightEdge);
                gamelevel["lButton"].x += (stagePosition-rightEdge);
                gamelevel["jButton"].x += (stagePosition-rightEdge);
                if (gamelevel.x < -(gamelevel.width-stage.stageWidth)) gamelevel.x = -(gamelevel.width-stage.stageWidth);
            }
            if (stagePosition < leftEdge) {
                gamelevel.x += (leftEdge-stagePosition);
                gamelevel["rButton"].x -= (leftEdge-stagePosition);
                gamelevel["lButton"].x -= (leftEdge-stagePosition);
                gamelevel["jButton"].x -= (leftEdge-stagePosition);
                if (gamelevel.x > 0) gamelevel.x = 0;
            }
        }

        // check collisions with enemies, items
        public function checkCollisions() {

            // enemies
            for(var i:int=enemies.length-1;i>=0;i--) {
                if (hero.mc.hitTestObject(enemies[i].mc)) {

                    // is the hero jumping down onto the enemy?
                    if (hero.inAir && (hero.dy > 0)) {
                        enemyDie(i);
                    } else {
                        heroDie();
                    }
                }
            }

            // items
            for(i=otherObjects.length-1;i>=0;i--) {
                if (hero.mc.hitTestObject(otherObjects[i])) {
                    getObject(i);
                }
            }
        }

        // remove enemy
        public function enemyDie(enemyNum:int) {
            var pb:PointBurst = new PointBurst(gamelevel,"Got Em!",enemies[enemyNum].mc.x,enemies[enemyNum].mc.y-20);
            gamelevel.removeChild(enemies[enemyNum].mc);
            enemies.splice(enemyNum,1);
        }

        // enemy got player
        public function heroDie() {
            // show dialog box
            var dialog:Dialog = new Dialog();
            dialog.x = 175;
            dialog.y = 100;
            addChild(dialog);

            if (playerLives == 0) {
                gameMode = "gameover";
                dialog.message.text = "Game Over!";
            } else {
                gameMode = "dead";
                dialog.message.text = "He Got You!";
                playerLives--;
            }

            hero.mc.gotoAndPlay("die");
        }

        // player collides with objects
        public function getObject(objectNum:int) {
            // award points for treasure
            if (otherObjects[objectNum] is Treasure) {
                var pb:PointBurst = new PointBurst(gamelevel,100,otherObjects[objectNum].x,otherObjects[objectNum].y);
                gamelevel.removeChild(otherObjects[objectNum]);
                otherObjects.splice(objectNum,1);
                addScore(100);

            // got the key, add to inventory
            } else if (otherObjects[objectNum] is Key) {
                pb = new PointBurst(gamelevel,"Got Key!" ,otherObjects[objectNum].x,otherObjects[objectNum].y);
                playerObjects.push("Key");
                gamelevel.removeChild(otherObjects[objectNum]);
                otherObjects.splice(objectNum,1);

            // hit the door, end level if hero has the key
            } else if (otherObjects[objectNum] is Door) {
                if (playerObjects.indexOf("Key") == -1) return;
                if (otherObjects[objectNum].currentFrame == 1) {
                    otherObjects[objectNum].gotoAndPlay("open");
                    levelComplete();
                }

            // got the chest, game won
            } else if (otherObjects[objectNum] is Chest) {
                otherObjects[objectNum].gotoAndStop("open");
                gameComplete();
            }

        }

        // add points to score
        public function addScore(numPoints:int) {
            gameScore += numPoints;
            scoreDisplay.text = String(gameScore);
        }

        // update player lives
        public function showLives() {
            livesDisplay.text = String(playerLives);
        }

        // level over, bring up dialog
        public function levelComplete() {
            gameMode = "done";
            var dialog:Dialog = new Dialog();
            dialog.x = 175;
            dialog.y = 100;
            addChild(dialog);
            dialog.message.text = "Level Complete!";
        }

        // game over, bring up dialog
        public function gameComplete() {
            gameMode = "gameover";
            var dialog:Dialog = new Dialog();
            dialog.x = 175;
            dialog.y = 100;
            addChild(dialog);
            dialog.message.text = "You Got the Treasure!";
        }

        // dialog button clicked
        public function clickDialogButton(event:MouseEvent) {
            removeChild(MovieClip(event.currentTarget.parent));

            // new life, restart, or go to next level
            if (gameMode == "dead") {
                // reset hero
                showLives();
                hero.mc.x = hero.startx;
                hero.mc.y = hero.starty;
                gameMode = "play";
            } else if (gameMode == "gameover") {
                cleanUp();
                gotoAndStop("start");
            } else if (gameMode == "done") {
                cleanUp();
                nextFrame();
            }

            // give stage back the keyboard focus
            stage.focus = stage;
        }           

        // clean up game
        public function cleanUp() {
            removeChild(gamelevel);
            this.removeEventListener(Event.ENTER_FRAME,gameLoop);
        }       


    }



}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T02:10:43+00:00Added an answer on June 16, 2026 at 2:10 am

    The error is with the following line and is occurring because the referenced MovieClip does not have a frame labelled “jump”:

    char.mc.gotoAndStop(char.animstate);
    

    My guess is that you made a change to the MovieClip which contains your character and, in doing so, removed the label which the code above references.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am making a card game where the player can touch and drag around
Possible Duplicate: Determine device (iPhone, iPod Touch) with iOS I am making a game
i am making a game using andengine in android, in this game various sprites(eggs)
I have a character in an iPod Touch game I am making that moves
I am making a 2 player drawing game ( Touch Game ). On the
I'm making a top down tile based game (think old Pokemon and Zelda games
Hi I'm making a dialog based application in MFC using: BOOL CClockMasterDlg::OnInitDialog() { CDialogEx::OnInitDialog();
For example, the first gen iPod touch is making sharp tick sounds when rolling
As i am making a simple forum with the touch of twitter like follower
I'm making a background app A in android, and want to catch the touch

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.