首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我该怎么解决这个问题呢?

我该怎么解决这个问题呢?
EN

Stack Overflow用户
提问于 2013-10-16 12:15:32
回答 1查看 54关注 0票数 0

我正在做一个游戏,昆虫从屏幕上方向下移动到底部。目标是让玩家用他/她的鼠标杀死这些昆虫。当杀死昆虫时,应该显示一个杀死框,这是我放进去的。杀死帧将在那里停留3秒,对象将被移除。这也会增加玩家的分数。

这段代码是在昆虫内部编写的:

代码语言:javascript
复制
function kill(event:MouseEvent):void
{
this.dead = true;

}

这段代码是在背景电影剪辑框架内编写的。

代码语言:javascript
复制
function moveEnemies():void
{
var tempEnemy:MovieClip;

for (var i:int =enemies.length-1; i>=0; i--)
{
    tempEnemy = enemies[i];
    if (tempEnemy.dead)
    {

        tempEnemy.gotoAndStop(21);
        var myTimer:Timer = new Timer(3000);
        myTimer.addEventListener(TimerEvent.TIMER, timerListener);
        myTimer.start();
}
}
}
function timerListener (e:TimerEvent):void
{

for (var i:int =enemies.length-1; i>=0; i--)
{
if (tempEnemy.dead)
{
    score++;
    roachLevel.score_txt.text = String(score);
removeEnemy(i);

}


}
}
function removeEnemy(id:int)
{

removeChild(enemies[id]);
enemies.splice(id,1);
}

我遇到的问题是,每当我点击昆虫时,它们就会停留在那里。我点击了另一个,它停留在那里。然后是另一个,过了一段时间他们就消失了,分数增加了。有时死亡框架不会出现,我一触摸它们就会死亡。你能告诉我怎样才能解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-16 12:42:28

你必须重新定位添加到敌人职业的分数,并为特定的被压制的敌人分配一个超时,而不是基础职业。最好的地方是在kill()函数中。

代码语言:javascript
复制
function kill(e:MouseEvent):void {
    this.dead=true;
    gotoAndStop(21);
    flash.utils.setTimeout(removeSelf,3000);
}
function removeSelf():void {
    this.parent.removeChild(this);
}

现在,调整评分和跟踪对象的机制。首先,如果一个对象变成了dead,你立即将它从敌人数组中移除(它会自己处理它的移除),并为它打分。其次,所有其他功能都应该保留下来。

代码语言:javascript
复制
for (var i:int=enemies.length-1;i>=0;i--) {
    var tempEnemy=enemies[i];
    if (tempEnemy.dead) {
        score++;
        enemies.splice(i,1);
    } else {
        tempEnemy.y++; // or other move function
    }
}

这个循环应该在enterframe侦听器中,所以每个帧都会调用一次。同样,在这里结合拼接和移动消除了将移动代码放在别处的需要,因为您无论如何都要迭代数组。

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

https://stackoverflow.com/questions/19395129

复制
相关文章

相似问题

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