首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AddChild函数错误

AddChild函数错误
EN

Stack Overflow用户
提问于 2011-12-09 01:27:45
回答 2查看 86关注 0票数 1

我创建的这个addChild函数(这个函数位于Document类中)遇到了一个问题:

代码语言:javascript
复制
public function enemySpawn(locX:Number,locY:Number)
{
    stage.addChild(this.basicEnemy);
    this.basicEnemy.x = locX;
    this.basicEnemy.y = locY;
}

基本上,每当我从Document Class的构造函数中调用此函数时,它只会用下一个子代替换前一个子代。我能做些什么来解决这个问题吗?

这里是Document Class,以防万一你们需要它:

代码语言:javascript
复制
package com.basicSurvivalEngine.documentClass
{
    import com.basicSurvivalEngine.assetHolders.*;
    import flash.events.*;
    import flash.display.*;

    public class Document extends MovieClip
    {
        public var mcMain:Player;
        public var basicEnemy:BasicEnemy;
        public var survivalLevel:MovieClip;
        public var wallCollisionArray:Array = new Array();

        public function Document()
        {
            mcMain = new Player(this);
            basicEnemy = new BasicEnemy(this);
            addEventListener(Event.ADDED_TO_STAGE,init);
            // constructor code
        }
        public function init(event:Event)
        {
            addEventListener(Event.ENTER_FRAME,update);
            addEventListener(Event.ENTER_FRAME,levelHandler);
            addEventListener(Event.ENTER_FRAME,levelTransition);
            addEventListener(Event.ENTER_FRAME,vCamMovement);
            this.enemySpawn(-2800, 650);
            this.enemySpawn(-2700, 650);
            this.enemySpawn(-2600, 650);
            this.enemySpawn(-2500, 650);
            addChild(mcMain);
            mcMain.x = 225;
            mcMain.y = 100;
        }
        public function update(event:Event)
        {

        }
        public function levelHandler(event:Event)
        {
            this.survivalLevel = this["survivalLevel"];
            for (var i:int = numChildren - 2; i >= 0; i--)
            {
                var child:DisplayObject = getChildAt(i);
                if (child.name == "wallCollision")
                {
                    this.wallCollisionArray.push(child);
                }
            }
        }
        public function levelTransition(event:Event):void
        {

        }
        public function vCamMovement(event:Event):void
        {
            this.mcMain.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;
            this.mcMain.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;
            this.survivalLevel.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;
            this.survivalLevel.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;
            this.basicEnemy.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;
            this.basicEnemy.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;
        }
        public function enemySpawn(locX:Number,locY:Number)
        {
            stage.addChild(this.basicEnemy);
            this.basicEnemy.x = locX;
            this.basicEnemy.y = locY;
        }

    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-09 01:33:21

据我观察,每次调用enemySpawn时,您都只是将相同的对象(basicEnemy)添加到舞台上。这就是你的问题,如果你想产生一个新的敌人,那就应该是一个新的对象。

票数 2
EN

Stack Overflow用户

发布于 2011-12-09 01:33:53

试试这个:

代码语言:javascript
复制
    protected var enemies:Array = new Array();
    public function enemySpawn(locX:Number,locY:Number)
    {
        var basicEnemy = new BasicEnemy(this);
        stage.addChild(basicEnemy);
        basicEnemy.x = locX;
        basicEnemy.y = locY;
        enemies.push(basicEnemy);
    }

    public function vCamMovement(event:Event):void        
    {
            this.mcMain.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;
            this.mcMain.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;           
            this.survivalLevel.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;                  this.survivalLevel.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;            
            foreach(var enemy in eneimes) {
                enemy.x -= (x-(((mcMain.x+(mcMain.width/2))-(stage.stageWidth/2))*-1))/15;
                enemy.y -= (y-(((mcMain.y+(mcMain.height/2))-(stage.stageHeight/2))*-1))/15;
            }        
        }

删除public var basicEnemy:BasicEnemy;并创建新敌人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8435065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档