首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flash as3平台游戏(我是菜鸟)

flash as3平台游戏(我是菜鸟)
EN

Stack Overflow用户
提问于 2016-04-15 11:53:49
回答 1查看 61关注 0票数 0

我正在用flash cs4 as3做一个平台游戏,我有很多麻烦让我的不同的类一起工作。我有一个子弹头类,敌人类,和一个确定敌人边界的保险杠类。当子弹击中敌人时,敌人的死亡动画会播放,然后两者都会从游戏中移除。当那个级别上的最后一个敌人被移除时,我得到了这个错误,说一个术语是未定义的,并且没有属性。另外,如果我把敌人杀了,他们被称为“东西不能正常工作”,我的代码肯定有一些错误。下面是我在bullet类和enemy类之间的代码:

代码语言:javascript
复制
if (enemyList.length>0) {
        for (var i:int = 0; i < enemyList.length; i++) {
            if (bulletList.length>0) {
                for (var j:int = 0; j < bulletList.length; j++) {
                    if (enemyList[i].hitTestObject(bulletList[j])) {
                        trace("Bullet and Enemy are colliding");
                        enemyList[i].gotoAndPlay("dead");
                        bulletList[j].removeSelf();
                        enemyList[i].xSpeedConst=0;
                        enemyList[i].isDead = true;
                    } else {
                        enemyList[i].isDead = false;
                    }
                }
            }
        }
    }
}

也是在玩家和敌人之间,保险杠和敌人之间。

代码语言:javascript
复制
if (enemyList[k].isDead == false && enemyList.length>0) {
        for (var k:int = 0; k < enemyList.length; k++) {
            if (enemyList[k].isDead == false && bumperList.length>0) {
                for (var h:int = 0; h < bumperList.length; h++) {
                    if (enemyList[k].hitTestObject(bumperList[h])) {
                        enemyList[k].changeDirection();
                    }
                }
            }
        }
    }

    if (enemyList[m].isDead == false && enemyList.length>0) {
        for (var m:int = 0; m < enemyList.length; m++) {
            if (enemyList[m].hitTestObject(player)) {
                trace("player collided with enemy");
                currentHP-=5;
                if (currentHP<=0) {
                    currentHP=0;
                    trace("you died");
                    gotoAndStop(1);
                }
                updateHealthBar();
            }
        }
    }

对不起,它有点长,我只是觉得我在这里遗漏了一些明显的东西,或者可能我所有的代码都是结构不良的。无论哪种方式,任何帮助都将非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 15:56:13

当子弹击中敌人时,你不需要将子弹和敌人从列表中删除吗?因为你做了

代码语言:javascript
复制
bulletList[j].removeSelf();

这可能会从显示列表中删除项目符号,但项目符号引用仍将保留在bulletList中,并将在下一次迭代中进行检查。

另外,你的第一个检查应该是

代码语言:javascript
复制
if (enemyList.length != 0 && bulletList.length != 0)

如果没有子弹,在所有敌人之间循环是没有意义的,反之亦然:)

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

https://stackoverflow.com/questions/36637962

复制
相关文章

相似问题

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