0

我正在制作一个 Flash 游戏,并快速查询动态添加到舞台的对象的分层/顺序。我将鼠标光标替换为十字准线,敌舰在屏幕上飞行,但我遇到的问题是敌舰出现在十字准线上方,因此当我去“瞄准”一艘船时,十字准线不可见它在船底。我怎样才能改变这个?

谢谢你。

4

4 回答 4

1

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

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

var enemyLayer:Sprite = new Sprite;

然后,您首先将您的敌人层添加到舞台上,然后是您的十字准线:

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

每当您添加敌人时,您都会将其添加到enemyLayer 中:

enemyLayer.addChild(enemy);

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

于 2013-04-23T19:38:15.927 回答
0

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

于 2013-04-23T13:53:28.713 回答
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(crosshair)”来更新十字准线的 z-index,这会将十字准线再次带到最顶层。

于 2013-04-23T15:53:31.997 回答