0

I am making a Flash game and have a quick query about layering / order of objects that are dynamically added to the stage. I have the mouse cursor replaced by a crosshair with enemy ships flying across the screen, but the problem I am having is that the enemy ships appear above the crosshair so that when I go to 'target' a ship, the crosshair is not visible as it is under the ship. How can I change this?

Thank you.

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

これはあなたのために働くかもしれません。次の関数にコード行を追加しました。

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 に答える