敌人在特定地点产卵

时间:2014-01-21 20:46:29

标签: actionscript-3 flash location

我是as3的新手,我试图寻找我的问题的答案。对于侧滚动游戏,我在某些位置设置了敌人,我需要它们产生,而不仅仅是在游戏中的这些特定位置出现一次。这些是关于问题的时间线代码的摘录。

var enemyList:Array = new Array();

 function addEnemiesToLevel1():void
{
addEnemy (700, 125);
addEnemy (1000, 125);
addEnemy(2405, 125);
addEnemy(3300, -155);
}

if (enemyList.length > 0) 
{
    for (var i:int = 0; i < enemyList.length; i++) 
    {
 function addEnemy(xLocation:int, yLocation:int):void
 {
var enemy:Enemy = new Enemy(xLocation, yLocation);
back.addChild(enemy);
enemy.addEventListener(Event.REMOVED, enemyRemoved);
enemyList.push(enemy);
 }

敌人被绑在一个控制向玩家移动的类文件

package  {
    import flash.display.MovieClip;
    import flash.events.Event;

    public class Enemy extends MovieClip {
        private var xSpeedConst:int = 6;

        public function Enemy(xLocation:int, yLocation:int) {
            // constructor code
            x = xLocation;
            y = yLocation;
            addEventListener(Event.ENTER_FRAME, loop);
        }

        public function loop(e:Event):void {

                x -= xSpeedConst;   
             }

        public function removeSelf():void {
            trace("remove enemy");
            removeEventListener(Event.ENTER_FRAME, loop);
            this.parent.removeChild(this);
        }

    }

}

敌人也会因为碰撞而设置,所以我不想过多地改变代码,因为我可能会破坏某些东西。如果我必须添加Timer,请告诉我到底在哪里,因为我已经尝试过并且失败了。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

虽然我建议不在时间轴中编码,但时间轴中的工作示例计时器设置如下所示:

var timer:Timer = new Timer(2000,0);
timer.addEventListener(TimerEvent.TIMER, createEnemy);

function createEnemy(e:TimerEvent):void{
    //create a new enemy, pass the x and y you want (xPos and yPos here)
    //var xPos:int, yPos:int
    var enemy:Enemy = new Enemy( xPos, yPos );
    back.addChild(enemy);
}

timer.start();

如果你在那里生成敌人,你也可以在你的类文件中进行类似的设置。同样,在时间线中执行此操作将更难以维护和调试。