让我们分解一下您目前的位置以及您想要实现的目标:
- 您当前有一个循环遍历每一行并向该行添加图块。
- 您当前有一个循环遍历每一层并向该层添加行。
- 您现在需要的是一个循环,它遍历每个级别并将层添加到该级别。
在进一步讨论之前,我要求您为变量使用更详细的名称。虽然i
,j
并且lngi
在上下文中可能有意义,但在我看来,最好用冗长来牺牲简洁性。
好吧,至少在开发和原型设计期间。
例如,如果您使用诸如currentLevel
和currentRow
之类的东西,它会使诸如此类的事情currentTileType = currentRow[currentColumnIndex]
变得更加简单/直接:)
当然,总会有平衡,这纯粹是个人喜好/意见,但也许通过这个例子,我可以把你带到黑暗的一面……;)
Soo..让我们陷入困境......您将看到的主要变化是以下新增内容..
从逻辑上讲,与其中一个循环说“对于这一行中的每一列,我想这样做”的方式相同,它实际上只是包装现有循环说“对于我定义的每一层,我想做这(画出这些行)……”
var currentGame = levels;
console.info("currentGame = ", levels);
// //Loop through levels in game
// for (var currentLevelIndex = 0, numLevelsInGame = currentGame.length; currentLevelIndex < numLevelsInGame; currentLevelIndex++) {
// var currentLevel = currentGame[currentLevelIndex];
var currentLevel = currentGame[levelIndex];
//Loop through layers in level
for (var currentLayerIndex = 0, numLayersInLevel = currentLevel.length; currentLayerIndex < numLayersInLevel; currentLayerIndex++) {
var currentLayer = currentLevel[currentLayerIndex];
//Loop through rows in layer
for (var currentRowIndex = 0, numRowsInLayer = currentLayer.length; currentRowIndex < numRowsInLayer; currentRowIndex++) {
var currentRow = currentLayer[currentRowIndex];
//Loop through columns in row
for (var currentColIndex = 0, numColsInRow = currentRow.length; currentColIndex < numColsInRow; currentColIndex++) {
var currentTileType = currentRow[currentColIndex];
//Do stuff based on what you have specified the current tile type as.. eg create it!!
请参阅此小提琴以获取更新版本:http:
//jsfiddle.net/vNpYe/4/
一旦你了解了这里发生的事情,将图层的 z-index 设置为“currentLayerIndex”(或其派生值)就很简单了