Need help - actionscript 3 - tetris game start and stop option

recently i tried to make a tetris game. i found a tutorial through google. the URL was http://www.emanueleferonato.com/2011/05/02/creation-of-a-complete-flash-tetris-game/. i worked. but the game starts automatically when i press Ctrl+Enter. I don’t know is it possible to start the game manually when i press SPACE and stop the game after a specific time(1 minute). I searched a lot in google but i didn’t find an appropriate one related to the code of the tutorial. can anyone please help me to make the game start manually and stop after a specific time. here’s the document class file of the game …

package {
    
    import flash.display.Sprite;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.KeyboardEvent;
    
    public class Main extends Sprite {
        
        private const TS:uint=30;
        private var fieldArray:Array;
        private var fieldSprite:Sprite;
        private var tetrominoes:Array = new Array();
        private var colors:Array=new Array();
        private var tetromino:Sprite;
        private var currentTetromino:uint;
        private var nextTetromino:uint;
        private var currentRotation:uint;
        private var tRow:int;
        private var tCol:int;
        private var timeCount:Timer=new Timer(2000);
        public function Main() {
            
            generateField();
            initTetrominoes();
            nextTetromino=Math.floor(Math.random()*3);
            generateTetromino();
            stage.addEventListener(KeyboardEvent.KEY_DOWN,onKDown);
        }
        private function generateField():void {
            fieldArray = new Array();
            fieldSprite=new Sprite();
            addChild(fieldSprite);
            fieldSprite.graphics.lineStyle(0,0xCFCCF7);
            for (var i:uint=0; i<20; i++) {
                fieldArray*=new Array();
                for (var j:uint=0; j<12; j++) {
                    fieldArray*[j]=0;
                    fieldSprite.graphics.beginFill(0x404040);
                    fieldSprite.graphics.drawRect(TS*j,TS*i,TS,TS);
                    fieldSprite.graphics.endFill();
                    }
                }
            }
            
          private function initTetrominoes():void {
              // I
            tetrominoes[0]=[[[0,0,0,0],[1,1,1,1],[0,0,0,0],[0,0,0,0]],
            [[0,1,0,0],[0,1,0,0],[0,1,0,0],[0,1,0,0]]];
            colors[0]=0x00FFFF;
            // T
            tetrominoes[1]=[[[0,0,0,0],[1,1,1,0],[0,1,0,0],[0,0,0,0]],
            [[0,1,0,0],[1,1,0,0],[0,1,0,0],[0,0,0,0]],
            [[0,1,0,0],[1,1,1,0],[0,0,0,0],[0,0,0,0]],
            [[0,1,0,0],[0,1,1,0],[0,1,0,0],[0,0,0,0]]];
            colors[1]=0xAA00FF;
            // L
            tetrominoes[2]=[[[0,0,0,0],[1,1,1,0],[1,0,0,0],[0,0,0,0]],
            [[1,1,0,0],[0,1,0,0],[0,1,0,0],[0,0,0,0]],
            [[0,0,1,0],[1,1,1,0],[0,0,0,0],[0,0,0,0]],
            [[0,1,0,0],[0,1,0,0],[0,1,1,0],[0,0,0,0]]];
            colors[2]=0xFFA500;
            // J
            tetrominoes[3]=[[[1,0,0,0],[1,1,1,0],[0,0,0,0],[0,0,0,0]],
            [[0,1,1,0],[0,1,0,0],[0,1,0,0],[0,0,0,0]],
            [[0,0,0,0],[1,1,1,0],[0,0,1,0],[0,0,0,0]],
            [[0,1,0,0],[0,1,0,0],[1,1,0,0],[0,0,0,0]]];
            colors[3]=0x0000FF;
            // Z
            tetrominoes[4]=[[[0,0,0,0],[1,1,0,0],[0,1,1,0],[0,0,0,0]],
            [[0,0,1,0],[0,1,1,0],[0,1,0,0],[0,0,0,0]]];
            colors[4]=0xFF0000;
            // S
            tetrominoes[5]=[[[0,0,0,0],[0,1,1,0],[1,1,0,0],[0,0,0,0]],
            [[0,1,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,0]]];
            colors[5]=0x00FF00;
            // O
            tetrominoes[6]=[[[0,1,1,0],[0,1,1,0],[0,0,0,0],[0,0,0,0]]];
            colors[6]=0xFFFF00;
            }     
          private function generateTetromino():void {
              currentTetromino = Math.floor(Math.random()*7);
              nextTetromino=Math.floor(Math.random()*3);
              drawNext();
              currentRotation=0;
              tRow=0;
              if (tetrominoes[currentTetromino][0][0].indexOf(1)==-1) {
                  tRow=-1;
                  }
                  tCol=4;
                  drawTetromino();
                  timeCount.addEventListener(TimerEvent.TIMER, onTime);
                  timeCount.start();
          }
          private function drawNext():void {
              if (getChildByName("next")!=null) {
                  removeChild(getChildByName("next"));
              }
              var next_t:Sprite=new Sprite();
              next_t.x=390;
              next_t.y=62
              next_t.name="next";
              addChild(next_t);
              next_t.graphics.lineStyle(0,0xb7b7b7);
              for (var i:int=0; i<tetrominoes[nextTetromino][0].length; i++) {
                  for (var j:int=0; j<tetrominoes[nextTetromino][0]*.length; j++)
                  {
                      if (tetrominoes[nextTetromino][0]*[j]==1) {
                          next_t.graphics.beginFill(colors[nextTetromino]);
                          next_t.graphics.drawRect(TS*j,TS*i,TS,TS);
                          next_t.graphics.endFill();
                      }
                  }
              }
          }
          private function onTime(e:TimerEvent):void {
              if (canFit(tRow+1,tCol,currentRotation)) {
                  tRow++;
                  placeTetromino();
                  } else {
                      landTetromino();
                      generateTetromino();
                  }
          }
          private function drawTetromino():void {
              var ct:uint=currentTetromino;
              tetromino=new Sprite();
              addChild(tetromino);
              tetromino.graphics.lineStyle(0,0xCFCCF7);
              for (var i:int=0; i<tetrominoes[ct][currentRotation].length; i++)
              {
                  for (var j:int=0; j<tetrominoes[ct][currentRotation]*.length; j++) {
                      if (tetrominoes[ct][currentRotation]*[j]==1) {
                          tetromino.graphics.beginFill(colors[ct]);
                          tetromino.graphics.drawRect(TS*j,TS*i,TS,TS);
                          tetromino.graphics.endFill();
                      }
                  }
              }
              placeTetromino();
              }     
          private function placeTetromino():void {
              tetromino.x=tCol*TS;
              tetromino.y=tRow*TS;
          }
          private function onKDown(e:KeyboardEvent):void {
              switch (e.keyCode) {
                  case 37 :
                  if (canFit(tRow,tCol-1,currentRotation)) {
                      tCol--;
                      placeTetromino();
                  }
                  break;
                  case 38 :
                  var ct:uint=currentRotation;
                  var rot:uint=(ct+1)%tetrominoes[currentTetromino].length;
                  if (canFit(tRow,tCol,rot)) {
                      currentRotation=rot;
                      removeChild(tetromino);
                      drawTetromino();
                      placeTetromino();
                  }
                  break;
                  case 39 :
                  if (canFit(tRow,tCol+1,currentRotation)) {
                      tCol++;
                      placeTetromino();
                  }
                  break;
                  case 40 :
                  if (canFit(tRow+1,tCol,currentRotation)) {
                      placeTetromino();
                      }   else {
                          landTetromino();
                          generateTetromino();
                      }
                      break;
              }
          }
          private function landTetromino():void {
              var ct:uint=currentTetromino;
              var landed:Sprite;
              for (var i:int=0; i<tetrominoes[ct][currentRotation].length; i++)
              {
                  for (var j:int=0; j<tetrominoes[ct][currentRotation]*.length; j++) {
                      if (tetrominoes[ct][currentRotation]*[j]==1) {
                          landed = new Sprite();
                          addChild(landed);
                          landed.graphics.lineStyle(0,0x000000);
                          landed.graphics.beginFill(colors[currentTetromino]);
                          landed.graphics.drawRect(TS*(tCol+j),TS*(tRow+i),TS,TS);
                          landed.graphics.endFill();
                          landed.name="r"+(tRow+i)+"c"+(tCol+j);
                          fieldArray[tRow+i][tCol+j]=1;
                      }
                  }
              }
              removeChild(tetromino);
              checkForLines();
          }
          private function checkForLines():void {
              for (var i:int=0; i<20; i++) {
                  if (fieldArray*.indexOf(0)==-1) {
                      for (var j:int=0; j<12; j++) {
                          fieldArray*[j]=0;
                          removeChild(getChildByName("r"+i+"c"+j));
                      }
                      for (j=i; j>=0; j--) {
                          for (var k:int=0; k<12; k++) {
                              if (fieldArray[j][k]==1) {
                                  fieldArray[j][k]=0;
                                  fieldArray[j+1][k]=1;
                                  getChildByName("r"+j+"c"+k).y+=TS;
                                  getChildByName("r"+j+"c"+k).name="r"+(j+1)+"c"+k;
                              }
                          }
                      }
                  }
              }
          }
          private function canFit(row:int,col:int,side:uint):Boolean {
              var ct:uint=currentTetromino;
              for (var i:int=0; i<tetrominoes[ct][side].length; i++) {
                  for (var j:int=0; j<tetrominoes[ct][side]*.length; j++) {
                      if (tetrominoes[ct][side]*[j]==1) {
                          // out of left boundary
                          if (col+j<0) {
                              return false;
                              }
                              // out of right boundary
                              if (col+j>11) {
                                  return false;
                              }
                              // out of bottom boundary
                              if (row+i>19) {
                                  return false;
                              }
                              // out of top boundary
                              if (row+i<0) {
                                  return false;
                              }
                              // over another tetromino
                              if (fieldArray[row+i][col+j]==1) {
                                  return false;
                              }
                          }
                      }
                  }
                  return true;
          }
    }
}
        

I’d be so grateful. thank you.