我在javascript对象上进行迭代以获取一些已保存的数据。
我在这个函数中测试了孤立的部分,它们正在工作
预期。问题是我的功能试图呈现“修改过的'
数据到另一个函数(" drawBricks()
")使用。
为简单起见,以下是功能:
//DrawBricks function
function drawBricks() {
for(c=0; c<brickColumnCount; c++) {
for (r=0; r<brickRowCount; r++) {
if(bricks[c][r].status == 1) {
var brickX = (c*(brickWidth+brickPadding))+brickOffsetLeft;
var brickY = (r*(brickHeight+brickPadding))+brickOffsetTop;
bricks[c][r].x = brickX;
bricks[c][r].y = brickY;
ctx.beginPath();
ctx.rect(brickX, brickY, brickWidth, brickHeight);
ctx.fillStyle = "#0095DD";
ctx.fill();
ctx.closePath();
}
}
}
}
//ActiveLevel()
function activeLevel(){
var checkLevel;
var stringLvl
var levelArray = ['r1','r2','r3'];
var blocks = [];
for(i=0; i<=gems.length; i++) {
if(level == gems[i].id){
checkLevel = gems[i];
}
}
levelArray.forEach(function (k) {
stringLvl = checkLevel.row[k];
stringLvl = stringLvl.split('');
});
for(c=0; c<brickColumnCount; c++){
blocks[c] = [];
blocks.push(stringLvl[c]);
for(r=0; r<brickRowCount; r++){
blocks[c][r] = { x: 0, y: 0, status: 1 };
blocks.push(stringLvl[c][r]);
if(blocks[c][r] == "-"){
status = 0;
}
else if(blocks[c][r] == "*"){
status = 1;
}
bricks = blocks;
}
}
// drawBricks();
}
这是我使用的对象
var gems = [
{
id: 1,
name: 'Level-1',
row: {
r1: '*****',
r2: '-***-',
r3: '--*--'
},
canPushtoDb: true,
hideLevel: false,
status: 1
//Other gems with corresponding id and name values, havent
//added them here to reduce the length of the question
}
我认为问题在于,虽然我仍在使用drawBrick
,但它并不是在阅读
来自activeLevel()
的数据。那么,您对activeLevel()
的看法是什么?
答案 0 :(得分:0)
我认为这个问题已经解决了这个问题:
function activeLevel(){
var checkLevel; // Actual level.
var levelArray = ['r1','r2','r3']; // string inside object.row.
var stringLvl = [];
gems.forEach(function(value, i) {
if(gems[i].id == level){
checkLevel = gems[i].row;
}
});
//console.log("step 1 - checkLevel is:", checkLevel);
levelArray.forEach(function (value, i) {
stringLvl[i] = checkLevel[value].split('');
});
//console.log("step 2 - stringLvl is:", stringLvl);
stringLvl.forEach(function(c, r) {
stringLvl[r].forEach(function(value, index) {
if(stringLvl[r][index] == "-") {
bricks[index][r].status = 0;
}
else {
bricks[index][r].status = 1;
}
});
});
// console.log("step 3 - blocks is:", blocks);
drawBricks();
}
我仍然在考虑使用C / C ++,但是采用 Ruby 语法,可读性方面的来源更加优雅。