我正在使用画布为我的游戏实现菜单系统(出于某些性能原因,我不能使用 HTML/CSS 来制作菜单)。我使用 JSON 配置了菜单,并且 menuComponent 对象是使用它们各自的属性(x、y、宽度、高度、imagePath 等)创建的。我有一个菜单加载器,然后它遍历组件对象并调用组件对象的绘制方法(当然,所有图像都等待它们的 onload 事件首先触发)。
无论如何,我希望我的图像按照调用它们的绘制方法的顺序绘制,以便它们以正确的顺序重叠。大多数情况下,这种行为是正确的,但有时它们会以错误的顺序绘制。
我的问题是 - 我可以相信 Canvas 按照为这些图像调用 drawMethod 的顺序绘制图像吗?假设我有图像 A,例如 10MB,图像 B 是 10kb。如果我调用绘制图像 A然后绘制图像 B 那么图像 B 是否有可能首先加载,因为它是一个较小的图像?
我试图让我的代码变得聪明(在我的组件对象中嵌套组件并递归调用绘图方法)所以我的代码中可能存在一些竞争条件,我只想确认上述行为是正确的。如果我添加逻辑以强制我的对象等到设置就绪标志,那么它似乎可以工作。但不幸的是,这会减慢我的菜单加载时间。