Actionscript 3 无法停止繁殖敌人

Actionscript 3 无法停止繁殖敌人,actionscript-3,flash,Actionscript 3,Flash,好吧,这是交易 下面的代码是我在恐怖游戏中定期生成一个敌人的代码。他每10秒在窗口产卵一次,然后每6秒后,他进入房间,你基本上已经死了,因为5秒后你会得到一个可爱的跳跃恐惧。敌人从窗户转移到卧室的那一刻,就是我希望窗户敌人停止产卵的时候 EnemyShipTimer是生成敌人的计时器 enemyTimer是一个计时器,用于计算敌人在 窗户,然后在房间里 在主文件中,我尝试了多种方法来消灭敌人,但没有效果 因此,function gtfo是我最近一次试图通过阻止类文件本身的繁殖来移除敌人的尝试。它

好吧,这是交易

下面的代码是我在恐怖游戏中定期生成一个敌人的代码。他每10秒在窗口产卵一次,然后每6秒后,他进入房间,你基本上已经死了,因为5秒后你会得到一个可爱的跳跃恐惧。敌人从窗户转移到卧室的那一刻,就是我希望窗户敌人停止产卵的时候

EnemyShipTimer
是生成敌人的计时器

enemyTimer
是一个计时器,用于计算敌人在
窗户,然后在房间里

在主文件中,我尝试了多种方法来消灭敌人,但没有效果

因此,
function gtfo
是我最近一次试图通过阻止类文件本身的繁殖来移除敌人的尝试。它仍然不起作用。也许我需要从游戏中删除类文件,但我不知道如何删除。请帮忙;A

PS,
countClick
计算你为了让敌人离开而做的点击次数,尽管当我让他离开时,房间里的敌人仍然会产生:c

package 
{

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.utils.getTimer;
import flash.events.TimerEvent;
import flash.text.TextField;

public class EnemyShip extends MovieClip

{
    private var clickCount:int = 0;
    private var enemyShipTimer:Timer;
    private var enemyTimer:Timer;



    public function EnemyShip()
    {

        this.x = 900;
        this.y = 214;

        addEventListener(MouseEvent.CLICK, addClick);
        addEventListener(MouseEvent.CLICK, countclick);
        addEventListener(TimerEvent.TIMER, gtfo);

    }



    function gtfo(e:TimerEvent):void{
        if (enemyTimer.currentCount==5)
        enemyShipTimer.stop();
        stage.removeChild(this);
    }

    function addClick(event:MouseEvent):void
    {
        clickCount = clickCount + 1;
        trace("Clickage : " + clickCount);

    }


    function countclick(event:MouseEvent):void
    {

        if (clickCount ==4)
        {
            stage.removeChild(this);

        }
    }

}

}
以下是可能与代码冲突的相关主时间线代码(我已经按照@Karma的有用说明更新了package类c:尽管敌人仍然在繁殖;我认为现在的问题是计时器函数与我在主时间轴中放置的计时器函数冲突,我试图将它们移动到package类中,但我不知道如何添加必要的movieclips,这样我就不会被攻击了。)“无法访问未定义的属性错误,因此我再次将两者分开

敌人
是滋生敌人的窗口

mosnta
是滋生敌人的房间

sod
是完全不玩的死亡屏幕(屏幕上的游戏)

var enemyShipTimer:Timer;

function sendEnemy(e:Event)
{

var enemy = new EnemyShip();
stage.addChild(enemy);
var enemytimer = new Timer (1000, count);
enemytimer.start();
enemyShipTimer = new Timer(10000);
enemyShipTimer.addEventListener("timer", sendEnemy);
enemyShipTimer.start();

enemytimer.addEventListener(TimerEvent.TIMER, countdowndesu);
function countdowndesu(e:Event):void{
if (enemytimer.currentCount>5){
    trace("ur ded");
    enemytimer.removeEventListener(TimerEvent.TIMER, countdowndesu);
    mosnta.visible=true;
    enemy.visible=false;


if (enemytimer.currentCount==8){
    sod.visible=true;
    sod.gotoAndPlay(2);
}



}
}
}

不是很了解你的游戏是如何运作的,但这里有一个修改过的版本,你的代码中有工作计时器。也许这会帮助你找到解决问题的方法

package 
{    
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class EnemyShip extends MovieClip    
    {
        private var clickCount:int = 0;
        private var enemyShipTimer:Timer;
        private var enemyTimer:Timer;

        public function EnemyShip()
        {        
            this.x = 900;
            this.y = 214;

            //only need one click handler
            addEventListener(MouseEvent.CLICK, addClick);

            //Instantiate Timers
            enemyShipTimer = new Timer(10000); //10 seconds
            enemyTimer = new Timer(6000); //6 seconds

            //add TimerEvent listeners onto Timer Objects
            enemyShipTimer.addEventListener(TimerEvent.TIMER, gtfo);
            enemyTimer.addEventListener(TimerEvent.TIMER, enemyTimerHandler);

            //Start the timers
            enemyShipTimer.start();
            enemyTimer.start();
        }       

        //This gets called every 10 seconds
        private function gtfo(e:TimerEvent):void
        {
            trace("enemy spawns at window");
            if (enemyTimer.currentCount == 5) {
                 enemyShipTimer.stop();
                 stage.removeChild(this);
            }
        }

        //This gets called every 6 seconds
        private function enemyTimerHandler(e:TimerEvent):void
        {
            trace("enemy moves to room");
        }

        private function addClick(event:MouseEvent):void
        {
            clickCount ++;
            trace("Clickage : " + clickCount);
            if (clickCount == 4)
            {
                stage.removeChild(this);

            }    
        }    
    }
}

为什么要为click设置两个侦听器?在一个侦听器中执行。也不要假设阶段存在:)如果不为空,请检查是否为空。如果您检查了相等性,则可能需要在计时器执行测试之前单击4或5次以上,更改为
clickCount>5
,然后查看您的代码是否会触发任何内容。您的计时器创建不正确。您需要实例化一个计时器对象,然后将TimerEvent侦听器添加到计时器上,然后en调用start()方法。@Karma您能提供一个正确创建计时器的示例吗?我不知道如何执行您的建议;a;感谢您提供的代码,尽管敌人仍然在繁殖;我认为现在的问题是计时器函数与我在主时间线中放置的计时器函数冲突,我试图将它们移动到包中类,但我不知道如何添加必要的movieclips,这样我就不会访问未定义的属性错误。我已经用时间线代码更新了我的帖子,但如果有帮助的话!我应该用更新的包代码更新主要问题吗?;0;