ActionScript 3.0 AddChild函数不起作用

时间:2014-02-06 01:25:50

标签: actionscript-3

我测试了我的代码,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()

        }
    }
}

我已经尝试添加此功能了。和舞台。在addchild面前,它仍然无效。

这是一个名为Game.as的文件

1 个答案:

答案 0 :(得分: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);