2014-02-06 3 views
1

Я проверил свой код, и addchild не будет работать. Ошибок не выводится.ActionScript 3.0 Функция AddChild не работает

package{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.display.*; 
    import flash.events.*; 
    import flash.geom.Rectangle; 
    import flash.media.Sound; 
    import flash.text.*; 
    public class Game extends flash.display.MovieClip{ 
     public static const STATE_INIT:int = 10; 
     public static const STATE_PLAY:int = 20; 
     public static const STATE_END_GAME:int = 30; 
     public var gameState:int = 0; 
     public var score:int = 0; 
     public var chances:int = 5; 
     public var bg:MovieClip; 
     public var enemies:Array; 
     public var player:MovieClip; 
     public var level:Number = 0; 
     public var scoreLabel:TextField = new TextField 
     public var levelLabel:TextField = new TextField 
     public var chancesLabel:TextField = new TextField 
     public var scoreText:TextField = new TextField 
     public var levelText:TextField = new TextField 
     public var chancesText:TextField = new TextField 
     public const SCOREBOARD_Y:Number = 380 
     public function Game(){ 
      addEventListener(Event.ENTER_FRAME, gameLoop); 
      bg = new BackImage(); 
      addChild(bg); 
      scoreLabel.text = "Score:"; 
      levelLabel.text = "level:"; 
      chancesLabel.text = "Misses:"; 
      scoreText.text = "0"; 
      levelText.text = "1"; 
      chancesText.text = "5"; 
      scoreLabel.y = SCOREBOARD_Y; 
      levelLabel.y = SCOREBOARD_Y; 
      chancesLabel.y = SCOREBOARD_Y; 
      scoreText.y = SCOREBOARD_Y; 
      levelText.y = SCOREBOARD_Y; 
      chancesText.y = SCOREBOARD_Y; 
      scoreLabel.x = 5; 
      scoreText.x = 50; 
      chancesLabel.x = 105; 
      chancesText.x = 155; 
      levelLabel.x = 205; 
      levelText.x = 260 
      addChild(scoreLabel); 
      addChild(levelLabel); 
      addChild(chancesLabel); 
      addChild(scoreText); 
      addChild(levelText); 
      addChild(chancesText); 
      gameState = STATE_INIT; 
     } 
     public function gameLoop(e:Event):void{ 
     switch(gameState){ 
      case STATE_INIT: 
       initGame(); 
       break; 
      case STATE_PLAY: 
       playGame(); 
       break; 
      case STATE_END_GAME: 
       endGame(); 
       break; 
     } 
    } 
     public function initGame():void{ 
      score = 0; 
      chances = 5; 
      player = new playerImage(); 
      enemies = new Array(); 
      level = 1; 
      levelText.text = level.toString(); 
      addChild(player); 
      player.startDrag(true,new Rectangle(0,0,550,400)) 
      gameState = STATE_PLAY 
     } 
     public function playGame():void{ 
      player.rotation += 15; 
      makeEnemies(); 
      moveEnemies(); 
      testCollisions(); 
      testForEnd(); 
     } 
     public function makeEnemies():void{ 
      var chance:Number = Math.floor(Math.random()*100); 
      var tempEnemy:MovieClip; 
      if (chance < 2 + level) { 
       tempEnemy = new EnemyImage() 
       tempEnemy.speed = 3 + level; 
       tempEnemy.gotoAndStop(Math.floor(Math.random()*5)+1); 
       tempEnemy.y = 435; 
       tempEnemy.x = Math.floor(Math.random()*515) 
       addChild(tempEnemy); 
       enemies.push(tempEnemy); 
      } 
     } 
     public 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 < -35){ 
        chances -= 1; 
        chancesText.text = chances.toString(); 
        enemies.splice(i,1); 
         removeChild(tempEnemy); 
        } 
       } 
      } 
      public function testCollisions():void { 
       var sound:Sound = new Pop(); 
       var tempEnemy:MovieClip; 
       for (var i:int = enemies.length -1;i >= 0;i--){ 
        tempEnemy = enemies[i]; 
        if(tempEnemy.hitTestObject(player)){ 
         score++; 
         scoreText.text = score.toString(); 
         sound.play(); 
         enemies.splice(i,1); 
         removeChild(tempEnemy); 
        } 
       } 
      } 
      public function testForEnd():void{ 
       if(chances == 5){ 
        gameState = STATE_END_GAME; 
       } 
       else if(score > level*20) { 
        level++; 
        levelText.text = level.toString(); 
       } 
      } 
      public function endGame():void{ 
       for(var i:int = 0; i< enemies.length; i++) { 
        removeChild(enemies[i]); 
      } 
       enemies = []; 
       player.stopDrag() 

     } 
    } 
} 

Я уже пробовал добавить это. и этап. перед добавлением, и он все еще не работает.

Это в файле с именем Game.as

+0

как вы называете ваш конструктор игры? –

+0

В файле Game.fla в первом фрейме у меня: import Game; var Сценарий: Game = new Game(); – ModDL

ответ

0

При создании экземпляра Game вам нужно добавить его в качестве ребенка на сцену:

// I would probably rename the variable to 'game' 
// 1st character of a variable name is conventionally lower-case 
// var game:Game = new Game(); 

var Script:Game = new Game(); 
this.addChild(Script); 
Смежные вопросы