【发布时间】:2020-03-11 01:06:15
【问题描述】:
解决方案:每次生成新树时,都会根据 Y 位置对树进行排序
trees.sort(function(a, b) {
return parseFloat(a.Y) - parseFloat(b.Y);
});
假设我有这个空数组:
trees[];
我有一个计时器,可以生成这些随机位置的树。
function generateTrees() {
if(tick % 50 === 0) {
trees.push({
X: randomNumber,
Y: randomNumber,
H: 60,
W: 30,
image: treeImage
});
}
}
所以它正在生成树,这很好。但有时树木在绘制它们时会重叠,我对此很好。 但问题是,在 Y 轴上其他树之上生成的树有时会在下面的树之上绘制, Here's an example. 我正在尝试模拟鸟瞰 3D 视图,因此我想在 Y 轴上将这些对象绘制在其下方的对象后面。
我有这个绘图代码,我已经尝试过 if 语句,但我不确定如何处理数组和单个数字“i”:
function draw() {
for(i = 0; i < trees.length; i++) {
ctx.drawImage(trees[i].X,trees[i].Y,trees[i].W,trees[i].H);
}
}
谁能指出我如何实施此解决方案的正确方向? 请提前谢谢您。
【问题讨论】:
-
最简单的解决方案是将 Y 轴切成 10px 的部分,并根据需要为每个部分随机创建树。我还没有听说过在画布中进行索引,因为您正在将树木绘制在彼此之上。所以你需要创建创建顺序。第 1 行的前 10 棵树,然后第 2 行的 7 棵树,以此类推。
-
我们不会在此处的标题中使用“SOLVED”或“RESOLVED”。如果您有自己的答案,请在下面发布,但请不要在您的问题中。
标签: javascript arrays object drawimage