我一直在寻找在同一画布中分层对象,但没有找到很多关于它的信息。
目前我已经使用多种画布技术将事物叠加在一起
例如: canvas Holder< ---这包含所有其他画布 加载画布 菜单画布 游戏画布 背景画布
并按特定顺序将它们添加到“stage = new stage (mainCanvas)
”,即可获得所需的分层
stage.addChild(background);
stage.addChild(game);
stage.addChild(menu);
stage.addChild(loading);
这很好用,但我想知道是否有办法改变添加到'游戏'画布的图像的zIndex,如果我在画布中有2个图像?
我已经在现场游戏中看到了这种事情,游戏遵循网格状格式,当你将射手放在另一个射手上方的广场上时,会在它后面重新定位......
http://fieldrunnershtml5.appspot.com/#sd ---适用于Chrome
任何想法如何完成?
由于
答案 0 :(得分:1)
不需要多个画布。当您在画布2d中使用游戏时,通常会清除并重绘画布〜每秒60次。你最后画的是什么。因此,为了模拟图层,您可以根据z-index对数组中的所有游戏对象进行排序,然后迭代数组中的所有对象,调用它们的绘制方法。
优化这样的渲染器有很大的空间,但这是使其工作的基本而简单的方法。
答案 1 :(得分:0)
canvas
只是像素 - 它没有“图层”。
如果你想进行视差滚动,那就是把多个画布放在同一个地方,并使用透明度来展示背后的那些。
答案 2 :(得分:0)
使用多个画布实现图层的技术是非常好的方法。您还应该跟踪需要清除/重绘的层 - 例如,{}仅在滚动时才刷新map
或者GUI/HUD
实际上不需要每秒重绘60次。
画布中没有z-index或对象,所有机制都取决于您自己的实现。例如,您可以创建一个要绘制的命令或对象数组 - 然后按zIndex(或任何您命名的方式)对其进行排序,并执行每个元素。