【问题标题】:EaselJS stops running after only three iterations of a nested 3x3 for loopEaselJS 仅在嵌套 3x3 for 循环的三次迭代后停止运行
【发布时间】:2013-10-22 18:05:04
【问题描述】:

我正在开发一个简单的图块系统,使用加载了 createjs.LoadQueue 的图块表。 tilesheet 本身似乎工作正常并且加载正确。为了保持测试简单,它构建了一个这样的快速图块:

var baseTile = new Array();
baseTile[0] = 0;
baseTile[1] = 1;
baseTile[2] = 2;
baseTile[4] = 4;
baseTile[5] = 5;
baseTile[6] = 6;
baseTile[7] = 7;
baseTile[8] = 8;
baseTile[9] = 9;

var i = 0;

for ( var y = 0; y < 3; y++) {
    for ( var x = 0; x < 3; x++) {
        // create a new Bitmap for each cell
        var sprite = new createjs.Sprite(tilesheet);
        sprite.gotoAndStop(baseTile[i]);

        sprite.x = x * 40;
        sprite.y = y * 40;

        // add bitmap to stage
        stage.addChild(sprite);
        i++;
        console.log(i);
    }
}

为了构建结构,它会循环遍历一组图块。 但是,它只创建前三个图块,然后失败,就好像它再也看不到“var sprite”一样。这是它产生的错误: 未捕获的类型错误:无法读取 null easeljs-0.7.0.min.js:12 的属性“未定义”

我正在使用 EaselJS 0.7.0 和 Preloadjs 0.4.0。有没有人遇到过这种情况?

【问题讨论】:

    标签: javascript sprite easeljs createjs


    【解决方案1】:

    你错过了第四个baseTile ...

    var baseTile = new Array();
    baseTile[0] = 0;
    baseTile[1] = 1;
    baseTile[2] = 2;
    baseTile[3] = 3; //You forgot this one
    baseTile[4] = 4;
    baseTile[5] = 5;
    baseTile[6] = 6;
    baseTile[7] = 7;
    baseTile[8] = 8;
    baseTile[9] = 9;
    

    【讨论】:

    • 噢!难怪我没有发现。我正在查看代码而不是数组。这就是我在凌晨 3:00 构建原版的结果。