【问题标题】:Moving enemy in flash as3在 Flash as3 中移动敌人
【发布时间】:2014-05-20 10:50:04
【问题描述】:

所以我有一堆火球,我想知道如何移动这些物品来创建一个类似手套的游戏。我已经创建了阵列,里面装满了火球,但我似乎无法让它们移动。这是我创建的数组的样子:

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

【问题讨论】:

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


    【解决方案1】:

    好吧,我困了,这不是我的想法(没有经过 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 是一个精灵(无论它是库对象还是由代码创建都应该可以工作)

    【讨论】:

    • 不用担心,很高兴为您提供帮助。
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多