我正在制作一个 Flash 游戏,并快速查询动态添加到舞台的对象的分层/顺序。我将鼠标光标替换为十字准线,敌舰在屏幕上飞行,但我遇到的问题是敌舰出现在十字准线上方,因此当我去“瞄准”一艘船时,十字准线不可见它在船底。我怎样才能改变这个?
谢谢你。
我正在制作一个 Flash 游戏,并快速查询动态添加到舞台的对象的分层/顺序。我将鼠标光标替换为十字准线,敌舰在屏幕上飞行,但我遇到的问题是敌舰出现在十字准线上方,因此当我去“瞄准”一艘船时,十字准线不可见它在船底。我怎样才能改变这个?
谢谢你。
setChildIndex() - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#setChildIndex%28%29
或者
swapChildren() - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#swapChildren%28%29
取决于你想做什么。
虽然公认的答案确实有效,但有时最好采用一种设计方法来解决问题并使其不那么令人头疼。
例如,您可以创建一个名为enemyLayer 的层:
var enemyLayer:Sprite = new Sprite;
然后,您首先将您的敌人层添加到舞台上,然后是您的十字准线:
stage.addChild(enemyLayer);
stage.addChild(crosshair);
每当您添加敌人时,您都会将其添加到enemyLayer 中:
enemyLayer.addChild(enemy);
使用这样的设计方法,您无需担心不断操纵您的十字准线以确保它位于顶部。十字准线将始终位于顶部。
您可以使用方法添加每个宇宙飞船,addChildAt(spaceship, 0);
其中零是索引,该索引应小于或等于十字准线的索引。您还可以为您的宇宙飞船创建单独的 Sprite。并在添加十字准线之前将其添加到舞台。
这可能对你有用。我在以下函数中添加了额外的代码行:
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,这会将十字准线再次带到最顶层。