1 Reply Latest reply on Dec 10, 2012 5:04 PM by roymeo_

    Error #1010 issue

    ProductOfInsomnia

      I'm trying to finish this code for a class project, and I keep getting this "

      TypeError: Error #1010: A term is undefined and has no properties.

          at ViolaMobileGameStudentsVersion_fla::MainTimeline/gameLoop()"

      I've debugged it and it's said that the issue is at frame 86, which is

      "menuScreen.level_txt.text = String(level);"

       

      Here's the whole code, it's kind of long but I can't figure anything out. All the texts have their proper names.

       

      Any suggestions are appreciated, I have to have this turned in by saturday..

       

      import fl.transitions.Tween;

      import fl.transitions.easing.*;

      import fl.transitions.TweenEvent;

      import flash.events.Event;

      import flash.events.KeyboardEvent;

      import flash.media.Sound;

      import flash.net.SharedObject;

      import flash.events.MouseEvent;

       

      /**************VARIABLES**************/

      var STATE_INIT_GAME:String = "STATE_INIT_GAME";

      var STATE_START_PLAYER:String = "STATE_START_PLAYER";

      var STATE_PLAY_GAME:String = "STATE_PLAY_GAME";

      var STATE_END_GAME:String = "STATE_END_GAME";

      var gameState:String;

       

      var player:MovieClip;

      var enemies:Array;

      var level:Number;

      var score:Number;

      var lives:Number;

       

      var Bullet:Array;

       

      //var bulletTimer:Timer = new Timer(200);  // do not add this line

       

      var explosions:Array;

       

      var spaceKey:Boolean = false;

      var rightKey:Boolean = false;

      var leftKey:Boolean = false;

      var upKey:Boolean = false;

      var downKey:Boolean = false;

       

      var accel:Accelerometer;

      var hiddenOptions:Boolean = true;

       

      /**************SETUP**************/

       

      gameOverScreen.visible = false;

      optionsMenu.visible = false;

       

      stage.addEventListener(KeyboardEvent.KEY_DOWN, watchKeys);

      stage.addEventListener(KeyboardEvent.KEY_UP, resetKey);

       

      stage.addEventListener(KeyboardEvent.KEY_UP, optionsKey);

       

      /**************INTRO SCREEN**************/

       

      titleScreen.play_btn.addEventListener(MouseEvent.CLICK, clickAway);

      function clickAway(event:MouseEvent):void

      {

          moveScreenOff(titleScreen);

      }

       

       

      //Gesture Swipe

      Multitouch.inputMode = MultitouchInputMode.GESTURE;

      titleScreen.addEventListener(TransformGestureEvent.GESTURE_SWIPE, swipeAway);

      function swipeAway(event:TransformGestureEvent):void

      {

          //Swipe Left

          if (event.offsetX == -1)

          {

              moveScreenOff(titleScreen);

          }

      }

       

      function moveScreenOff(screen:MovieClip):void

      {

          var introTween = new Tween(screen,"x",Strong.easeInOut,screen.x,(screen.width)*-1,1,true);

          introTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinish);

          function tweenFinish(e:TweenEvent):void

          {

              gameState = STATE_INIT_GAME;

              addEventListener(Event.ENTER_FRAME, gameLoop);

          }

      }

       

       

      we stopped here

       

      /**************GAME STATES**************/

      function gameLoop(e:Event):void

      {

          menuScreen.level_txt.text = String(level);

          menuScreen.score_txt.text = String(score);

          menuScreen.lives_txt.text = String(lives);

          switch (gameState)

          {

              case STATE_INIT_GAME :

                  initGame();

                  break;

              case STATE_START_PLAYER :

                  startPlayer();

                  break;

              case STATE_PLAY_GAME :

                  playGame();

                  break;

              case STATE_END_GAME :

                  endGame();

                  break;

          }

      }

       

      /**************STATE_INIT_GAME**************/

      function initGame():void

      {

          player = new Player();

          enemies = new Array();

          Bullet = new Array();

          explosions = new Array();

          level = 1;

          score = 0;

          lives = 3;

          fire_btn.visible = true;

          gameState = STATE_START_PLAYER;

      }

       

      /**************STATE_START_PLAYER**************/

      function startPlayer():void

      {

          player.x = stage.stageWidth / 2;

          player.y = stage.stageHeight - player.height;

          player.cacheAsBitmap = true;

          addChild(player);

          accel = new Accelerometer();

          if (Accelerometer.isSupported)

          {

              accel.addEventListener(AccelerometerEvent.UPDATE, accelMove);

          }

          else

          {

              //If there is no accelerometer support...

              addEventListener(Event.ENTER_FRAME, movePlayer);

          }

          gameState = STATE_PLAY_GAME;

      }

       

       

      function accelMove(event:AccelerometerEvent):void

      {

          player.x -=  event.accelerationX * 100;

          player.y +=  event.accelerationY * 80;

          if (player.x < 0)

          {

              player.x = 0;

          }

          else if (player.x > (stage.stageWidth - player.width) )

          {

              player.x = stage.stageWidth - player.width;

          }

          if (player.y < 50)

          {

              player.y = 50;

          }

          else if (player.y > stage.stageHeight - player.height)

          {

              player.y = stage.stageHeight - player.height;

          }

          addEventListener(MouseEvent.CLICK,fire);

      }

       

      function fire(evt:MouseEvent):void

      {

          createBullet();

      }

      function movePlayer(Evt:Event):void

      {

          if (rightKey)

          {

              player.x +=  10;

          }

          else if (leftKey)

          {

              player.x -=  10;

          }

          if (upKey)

          {

              player.y -=  4;

          }

          else if (downKey)

          {

              player.y +=  4;

          }

       

          if (spaceKey)

          {

              createBullet();

          }

       

          if (player.x < 0)

          {

              player.x = 0;

          }

          else if (player.x > stage.stageWidth - player.width)

          {

              player.x = stage.stageWidth - player.width;

          }

          if (player.y < 50)

          {

              player.y = 50;

          }

          else if (player.y > stage.stageHeight - player.height)

          {

              player.y = stage.stageHeight - player.height;

          }

      }

       

      function createBullet():void

      {

          var tempBullet:MovieClip = new Bullets();

          tempBullet.x = player.x;

          tempBullet.y = player.y;

          tempBullet.cacheAsBitmap = true;

          tempBullet.speed = 15;

          addChild(tempBullet);

          Bullet.push(tempBullet);

      }

       

      function moveBullet():void

      {

          var tempBullet:MovieClip;

          for (var i=Bullet.length-1; i>=0; i--)

          {

              tempBullet = Bullet[i];

              tempBullet.y -=  tempBullet.speed;

              if (tempBullet.y < 0)

              {

                  removeBullet(i);

              }

          }

       

          var tempExplosion:MovieClip;

          for (i=explosions.length-1; i>=0; i--)

          {

              tempExplosion = explosions[i];

              if (tempExplosion.currentFrame >= tempExplosion.totalFrames)

              {

                  removeExplosion(i);

              }

          }

      }

       

      /**************STATE_PLAY_GAME**************/

      function playGame():void

      {

          makeEnemies();

          moveEnemies();

          moveBullet();

          testForEnd();

      }

       

      function makeEnemies():void

      {

          var chance:Number = Math.floor(Math.random() * 60);

          var whichEnemy:Number = Math.round(Math.random() * 2 + 1);

          if (chance <= 1 + level)

          {

              var tempEnemy:MovieClip;

              tempEnemy = new Enemy();

              tempEnemy.gotoAndStop(whichEnemy);

              tempEnemy.speed = 3;

              tempEnemy.x = Math.round((Math.random() * 800) + 20);

              tempEnemy.cacheAsBitmap = true;

              addChild(tempEnemy);

              enemies.push(tempEnemy);

              setChildIndex(menuScreen,numChildren-1);

          }

      }

       

      function moveEnemies():void

      {

          var tempEnemy:MovieClip;

          for (var i:int =enemies.length-1; i>=0; i--)

          {

              tempEnemy = enemies[i];

              tempEnemy.y +=  tempEnemy.speed;

       

              if (tempEnemy.y > stage.stageHeight)

              {

                  removeEnemy(i);

                  lives--;

              }

              else if (tempEnemy.hitTestObject(player))

              {

                  makeExplosion(tempEnemy.x, tempEnemy.y);

                  removeEnemy(i);

                  lives--;

              }

              var tempBullet:MovieClip;

              //tempEnemy = enemies[i];

              for (var j:int=Bullet.length-1; j>=0; j--)

              {

                  tempBullet = Bullet[j];

                  if (tempEnemy.hitTestObject(tempBullet))

                  {

                      makeExplosion(tempEnemy.x, tempEnemy.y);

                      removeEnemy(i);

                      removeBullet(j);

                      score +=  5;

                  }

              }

          }

      }

       

      function makeExplosion(ex:Number, ey:Number):void

      {

          var tempExplosion:MovieClip;

          tempExplosion = new Explosion();

          tempExplosion.x = ex;

          tempExplosion.y = ey;

          addChild(tempExplosion);

          explosions.push(tempExplosion);

          //var sound:Sound = new Explode();

          //sound.play();

      }

       

       

      function testForEnd():void

      {

          if (score > level * 100)

          {

              level++;

          }

          if (lives == 0)

          {

              gameState = STATE_END_GAME;

          }

      }

       

      function removeEnemy(idx:int)

      {

          removeChild(enemies[idx]);

          enemies.splice(idx,1);

      }

       

      function removeBullet(idx:int)

      {

          removeChild(Bullet[idx]);

          Bullet.splice(idx,1);

      }

       

      function removeExplosion(idx:int)

      {

          removeChild(explosions[idx]);

          explosions.splice(idx,1);

      }

       

      /*********** KEY PRESS ***********/

       

      function watchKeys(evt:KeyboardEvent):void

      {

          if (evt.keyCode == Keyboard.SPACE)

          {

              spaceKey = true;

          }

          if (evt.keyCode == Keyboard.RIGHT)

          {

              rightKey = true;

          }

          if (evt.keyCode == Keyboard.LEFT)

          {

              leftKey = true;

          }

          if (evt.keyCode == Keyboard.UP)

          {

              upKey = true;

          }

          if (evt.keyCode == Keyboard.DOWN)

          {

              downKey = true;

          }

      }

       

      function resetKey(evt:KeyboardEvent):void

      {

          if (evt.keyCode == Keyboard.SPACE)

          {

              spaceKey = false;

          }

          if (evt.keyCode == Keyboard.RIGHT)

          {

              rightKey = false;

          }

          if (evt.keyCode == Keyboard.LEFT)

          {

              leftKey = false;

          }

          if (evt.keyCode == Keyboard.UP)

          {

              upKey = false;

          }

          if (evt.keyCode == Keyboard.DOWN)

          {

              downKey = false;

          }

      }

       

      /**************END SCREEN**************/

      function endGame():void

      {

          accel.removeEventListener(AccelerometerEvent.UPDATE, accelMove);

          removeEventListener(Event.ENTER_FRAME, gameLoop);

          stage.removeEventListener(KeyboardEvent.KEY_DOWN, watchKeys);

          stage.removeEventListener(KeyboardEvent.KEY_UP, resetKey);

       

          fire_btn.enabled = false;

          fire_btn.visible = false;

          removeEventListener(MouseEvent.CLICK,fire);

          removeGame();

          gameOverScreen.visible = true;

          gameOverScreen.x = 0;

       

       

          showResults();

      }

      /**************REMOVE GAME**************/

      function removeGame():void

      {

          for (var i:int = enemies.length-1; i >=0; i--)

          {

              removeEnemy(i);

          }

          for (var j:int = Bullet.length-1; j >=0; j--)

          {

              removeBullet(j);

          }

          for (var k:int = explosions.length-1; k >=0; k--)

          {

              removeExplosion(k);

          }

          removeChild(player);

       

      }

       

      function showResults():void

      {

          gameOverScreen.enter_btn.visible = false;

          gameOverScreen.nameField_txt.visible = false;

       

          var so:SharedObject = SharedObject.getLocal("alltimeHighScore");

          if (so.data.score == undefined || score > so.data.score)

          {

              gameOverScreen.highScore_txt.text = "You made it to level " + level + " with a high score of " + score + ". \n Enter your name below.";

              gameOverScreen.enter_btn.visible = true;

              gameOverScreen.nameField_txt.visible = true;

          }

          else

          {

              gameOverScreen.highScore_txt.text = "Your score of " + score + " \n does not beat " + so.data.score + " \n by " + so.data.name;

          }

          gameOverScreen.quit_btn.addEventListener(MouseEvent.CLICK, exitApp);

          gameOverScreen.enter_btn.addEventListener(MouseEvent.CLICK, clickEnter);

          function clickEnter(event:MouseEvent):void

          {

              gameOverScreen.highScore_txt.text = "Great job, " + gameOverScreen.nameField_txt.text + "! \n You made it to level " + level + " \n with a score of " + score + "!";

       

              so.data.score = score;

              so.data.level = level;

              so.data.name = gameOverScreen.nameField_txt.text;

              so.flush();

       

              gameOverScreen.enter_btn.visible = false;

              gameOverScreen.nameField_txt.visible = false;

          }

          //Enables the play button

          gameOverScreen.playAgain_btn.addEventListener(MouseEvent.CLICK, clickFinalAway);

          function clickFinalAway(event:MouseEvent):void

          {

              moveScreenOff(gameOverScreen);

          }

      }

       

      /**************OPTIONS MENU**************/

       

      function optionsKey(event:KeyboardEvent):void

      {

          //Options menu, use 16777234 or Keyboard.MENU

          if (event.keyCode == 16777234)

          {

              if (hiddenOptions)

              {

                  setChildIndex(optionsMenu,numChildren-1);

                  optionsMenu.visible = true;

                  optionsMenu.addEventListener(MouseEvent.CLICK, exitApp);

                  pauseGame();

              }

              else

              {

                  optionsMenu.visible = false;

                  optionsMenu.removeEventListener(MouseEvent.CLICK, exitApp);

                  resumeGame();

              }

              hiddenOptions = ! hiddenOptions;

          }

      }

       

      function exitApp(event:MouseEvent):void

      {

          //NativeApplication.nativeApplication.exit(0);

      }

       

      //Keep screen awake if you are using the Accelerometer etc.

      //NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;

       

      stage.addEventListener(Event.DEACTIVATE, Deactivate);

      function Deactivate(event:Event):void

      {

          pauseGame();

      }

      stage.addEventListener(Event.ACTIVATE, Activate);

      function Activate(event:Event):void

      {

          resumeGame();

      }

       

      function pauseGame():void

      {

          //Remove any listener events, timers etc.

          if (gameState == STATE_PLAY_GAME)

          {

              removeEventListener(Event.ENTER_FRAME, gameLoop);

              accel.removeEventListener(AccelerometerEvent.UPDATE, accelMove);

              removeEventListener(MouseEvent.CLICK,fire);

          }

      }

       

      function resumeGame():void

      {

          //Activate any listener events, timers etc.

          if (gameState == STATE_PLAY_GAME)

          {

              addEventListener(Event.ENTER_FRAME, gameLoop);

              accel.addEventListener(AccelerometerEvent.UPDATE, accelMove);

              addEventListener(MouseEvent.CLICK,fire);

          }

      }