更改动态对象的分层

时间:2013-04-23 13:41:09

标签: actionscript-3 flash

我正在制作Flash游戏,并快速查询动态添加到舞台的对象的分层/顺序。我的鼠标光标被十字准线所取代,敌人的船只飞过屏幕,但我遇到的问题是敌舰出现在十字准线上方,所以当我去“瞄准”一艘船时,十字准线不可见它在船下。我怎么能改变这个?

谢谢。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

虽然接受的答案确实有效,但有时最好采用一种解决问题的设计方法,使其不那么令人头痛。

例如,你可以创建一个名为enemyLayer的图层:

var enemyLayer:Sprite = new Sprite;

然后你会先将敌人的队友添加到舞台上,然后再添加你的十字准线:

stage.addChild(enemyLayer);
stage.addChild(crosshair);

每当你添加一个敌人时,你都会将它添加到敌人的身上:

enemyLayer.addChild(enemy);

使用这样的设计方法,您无需担心不断操纵十字准线以确保它位于顶部。十字准线总是处于最顶端。

答案 2 :(得分:0)

您可以使用方法addChildAt(spaceship, 0);添加每个太空船,其中零是索引,该索引应小于或等于十字准线索引。您也可以为您的宇宙飞船创建单独的精灵。并在添加十字准线之前将其添加到舞台上。

答案 3 :(得分:0)

这可能适合你。我在以下函数中添加了一行额外的代码:

function sendEnemy(e:Event)
{
    var enemy = new EnemyShip();
    stage.addChild(enemy);
    stage.addChild(crosshair);//brings crosshair to topmost level on stage
}

function sendEnemyMed(e:Event)
{
    var enemymed = new EnemyShipMed();
    stage.addChild(enemymed);
    stage.addChild(crosshair);//brings crosshair to topmost level on stage
}

function sendEnemySmall(e:Event)
{
    var enemysmall = new EnemyShipSmall();
    stage.addChild(enemysmall);
    stage.addChild(crosshair);//brings crosshair to topmost level on stage
}

在舞台上添加任何内容后,您只需要通过调用' stage.addChild(十字准线)'来更新十字准线的z-index。这使得十字准线再次位于最顶层。