精华 如何调整game.add.sprite的显示深度?
发布于 7 年前 作者 langyunbao 3000 次浏览 来自 问答

game.add.sprite的显示深度默认是后添加的在上面,请问如何手动调节这个顺序呢?感激不尽

1 回复

好问题。解决层叠顺序问题我这里分享三种方案。 正如你所说的,默认是后添加的在上面,那么第一种方案就是想放在上面的后添加就行啦。 可能有人有这样的场景,后面的是动态添加的,只能后添加,却希望它在最底层。那么这时候只需要调用sprite中的bringToTop,它可以将某一个sprite拉到最高层。同理,还有sendToBack,它可以将精灵放到最低 层。但是要注意,通过这种方式调整层级顺序,精灵必须位于同一个组内,也就是他们互为兄弟节点。 当然我自己不喜欢这样做,在phaser中,有一个很好的实践,是把创建的精灵都用组(Group)管理起来,而组可以一开始就创建,从而顺序已经定好。这样就完全不会有这种问题,举个例子: var bottomGroup = game.add.group(); var topGroup = game.add.group(); var top = game.add.sprite(xxx); var bottom = game.add.sprite(xxx); bottomGroup.addChild(bottom); topGroup.addChild(top); 看到了,虽然bottom在后面添加,但是它被放到了bottomGroup中,而bottomGroup在topGroup之前被创建,所以它位于底层。 三种方法,我推荐使用第三种,这样写游戏会方便很多。

回到顶部