如何在游戏AS3中显示玩家的生命

时间:2014-02-10 20:21:25

标签: actionscript-3 flash flashdevelop flash-cs6

嘿大家所以试图做到这一点有点麻烦。我了解如何添加生命并通过舞台上的动态文本字段显示它们。我的游戏现在设置为发生这种情况,并且每当玩家死于实时减少时,它就可以正常工作。

但是我希望显示所有3个生命中的图像,这是我在Flash CS6中绘制的自定义Movie Clip来代表生活。因此,所有3个生命将在游戏中显示,并且一旦玩家死亡,其中一个生命图像被移除。

我知道该怎么做。例如,我创建了一个“for循环”来显示屏幕上的所有3个图像,并创建变量以将它们水平放置在彼此旁边,空间为30像素。

但我不确定这是否是解决这个问题的正确方法。还有点混淆我如何在玩家死亡时删除其中一张图片?

到目前为止,她是我的代码:

    public var playerLives:mcPlayerLives;
    private var nLives:Number = 3;
    private var startPoint:Point;
    private var aPlayerLivesArray:Array;

在我的主要类Engine:

aPlayerLivesArray = new Array;
addPlayerLivesToStage();

然后是addplayerlivestostage函数:

public function addPlayerLivesToStage():void
    {

        var startPoint:Point = new Point((stage.stageWidth / 2) - 300, (stage.stageHeight / 2) - 200);
        var xSpacing:Number = 30;

        for (var i = 0; i < nLives; i++)
         {
             trace(aPlayerLivesArray.length);
             playerLives = new mcPlayerLives();
             stage.addChild(playerLives);
             playerLives.x = startPoint.x + (xSpacing * i);
             playerLives.y = startPoint.y;
             aPlayerLivesArray.push(playerLives);
         }
    }

所以就像我上面说的一切都很好,它确实显示了代表生活的3幅图像,但这是正确的方法还是有更简单的方法?

2 个答案:

答案 0 :(得分:1)

我认为你正在用正确的方式来增加生命。 并且为了删除它们,你不需要删除所有并添加新的生命,你可以删除生命数组的最后一个元素,所以,它已经完成了,我认为这已经是一个简单的方法

所以,你可以实现这个

for (var i = 0; i < nLives; i++)

更好地利用“在游戏中增加生命(赚取生命)”

之类的东西
for (var i = aPlayerLivesArray.length; i < nLives; i++)

但是在玩家死亡时删除了lifeArray的最后一个元素

后,不要忘记将数组长度减少1

答案 1 :(得分:1)

看起来非常接近合理的方法。我想在舞台上有一个空白的容器动画片段,你想要显示生命图标。在库中创建一个生活图标,并将其链接以与actionscript一起导出。生成游戏视图时,可以使用三个生命的起始值填充此容器。放置第一个,然后根据第一个位置放置后续的那个。

一些未经测试的代码:

注意:以下假设您的生命容器剪辑名为 lives_container ,图书馆中生活图标的链接实例名称为 Life_icon

var numberOfLives:Number = 3;
var iconSpacing:Number = 5;
var nextX:Number = 0;

for(var i:int = 0; i < numberOfLives; i++ )
{
    var icon:MovieClip = new Life_icon();
    icon.x = nextX;
    lives_container.addChild( icon );

    nextX += icon.width + iconSpacing;
}

这样,如果玩家通过在最后 nextX 值添加新图标获得了额外的生命,就可以轻松添加额外的生命,如下所示:

function addLife():void
{
    var icon:MovieClip = new Life_icon();
    icon.x = nextX;
    lives_container.addChild( icon );

    nextX += icon.width + iconSpacing;
}

或在玩家失去它们时删除它们:

function removeLife():void
{
    var numberOfLivesDisplayed:Number = lives_container.numChildren();
    lives_container.removeChildAt( numberOfLivesDisplayed - 1 );

    nextX -=  icon.width + iconSpacing;
}

使用生命图标的容器剪辑可以在以后需要时更轻松地调整生活图标的位置。