在flash中移动敌人as3

时间:2014-04-07 23:59:56

标签: arrays actionscript-3 flash actionscript game-physics

所以我有一系列火球,我想知道如何移动这些物品以创造像游戏一样的挑战。我已经创建了阵列并且它充满了火球,但我似乎无法让它们移动。这就是我创建的数组的样子:

for (var i:Number = 0; i < fireballs; i++) {
    var mcFireball :fireball = new fireball();
    this.addChild(mcFireball);
    mcFireball.x = Math.floor((Math.random() * location) + 100);
    mcFireball.y = Math.floor((Math.random() * location) + 100);
    mcFireball.scaleX = .5;
    mcFireball.scaleY = .5;
    array.push(mcFireball);
}

这就是我试图移动它们的方式:

        for (var i :Number = 0; i < fireballs; i++) {
            if (array[i] == null) {
                trace("Error here");
                return;
            }
            trace(array[i]);
            var mcFireball :fireball = array[i];
            mcFireball.moveEnemy();
        }

这就是我的moveEnemy()的样子:

    public function moveEnemy():void
    {
        if ((this.x + this.width > this.stage.stageWidth) || (this.x - this.width <= 0))
            _nEnemyMovementSpeed *= -1;         

        this.x += _nEnemyMovementSpeed;
    }

我确定错误在函数范围内,但我不确定我需要做些什么才能让它们正常工作

My error is that moveEnemy() isn't a function

1 个答案:

答案 0 :(得分:1)

好的,我很困倦&amp;这是我的头脑(没有Flash测试),但它应该给你一般的想法。

mcFireball.moveEnemy();导致错误,因为您试图通过说它是mcFireball类中的函数来达到它。为了更好地理解(例子):你有一个Game_Stages.as类文件,每个级别都是一个函数,所以运行5级你会说你的类似于你的... Game_Stages.Level5();现在考虑mcFireBall是一个类文件吗?它有moveEnemy功能吗?看看为什么Flash会哭?

可能的解决方案

for (var i :Number = 0; i < fireballs; i++) 
{
            if (array[i] == null) 
            { trace("Error here"); return; }

            trace(array[i]);
            var mcFireball :fireball = array[i];
            moveEnemy(mcFireball); //do moveEnemy func with mcFireball as input 
 }

然后你可以像下面那样moveEnemy。在此函数中,我们现在引用与“ fball

相同的输入
public function moveEnemy(fball:Sprite):void
{
        if ((fball.x + fball.width > this.stage.stageWidth) || (fball.x - fball.width <= 0))
        { _nEnemyMovementSpeed *= -1; }         

        else
        {fball.x += _nEnemyMovementSpeed; }
}

这假设mcFireball是一个精灵(并且无论是库对象还是代码创建都应该工作)