我创建的这个addChild函数(这个函数位于Document类中)遇到了一个问题:
public function enemySpawn(locX:Number,locY:Number)
{
stage.addChild(this.basicEnemy);
this.basicEnemy.x = locX;
this.basicEnemy.y = locY;
}基本上,每当我从Document Class的构造函数中调用此函数时,它只会用下一个子代替换前一个子代。我能做些什么来解决这个问题吗?
这里是Document Class,以防万一你们需要它:
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;
}
}
}发布于 2011-12-09 01:33:21
据我观察,每次调用enemySpawn时,您都只是将相同的对象(basicEnemy)添加到舞台上。这就是你的问题,如果你想产生一个新的敌人,那就应该是一个新的对象。
发布于 2011-12-09 01:33:53
试试这个:
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;并创建新敌人
https://stackoverflow.com/questions/8435065
复制相似问题