2013-12-18 33 views
1

我遇到了一个问题,即在创建并添加到舞台后,位图似乎正在加载。你可以看到所有这些代码工作right here。您可以查看控制台日志以获取我正在获取的日志语句(也在下面显示)。EaselJS位图不显示

我在这里创建了一个函数的位图(我知道这段代码工作正常 - 你不必读这个,但注意game.update在最后如何设置为true)。

for (i = -r; i <= r; i++){ 
     var min = Math.max(-r, -r - i); 
     var max = Math.min(r, r - i); 

     for (j = min; j <= max; j++){ 
      k = -1 * (i + j); 
      //var a = length)Math.floor(Math.random() * t_imgs.; 
      //var a = mountain; 
      var a; 
      if(game.grid[i][j].height == null){ 
       a = mountain; 
      } else if (game.grid[i][j].height > .5){ 
       a = plain; 
      } else{ 
       a = water; 
      } 
      var b = Math.floor(Math.random() * (game.t_imgs[a].length)); 
      if(game.t_imgs[a][b] == null){ 
       console.log("NULL:", a, b); 
      } 
      bitmap = new createjs.Bitmap(game.t_imgs[a][b]); 
      container.addChild(bitmap); 
      bitmap.regX = game.hexwidth/2; 
      bitmap.regY = game.hexheight/2; 
      bitmap.x = game.xcenter + game.hexwidth * .75 * i; 
      bitmap.y = game.ycenter + game.hexheight * .5 * (j - k); 
      game.grid[i][j].termap = bitmap; 
     } 
    } 



    document.getElementById("loader").className = ""; 
    createjs.Ticker.addEventListener("tick", tick); 

    console.log("finished loading images and creating bitmaps. Game update set to true"); 
    game.update = true; 
} 

我的问题在于tick函数,它被称为每秒60次。我只想要地图更新,如果有什么改变(当game.update == true)。

function tick(event) { 
      if(game.update == true){ 
       game.update = false; 
       var i,j,k; 
       var r = game.radius; 
       for (i = -r; i <= r; i++){ 
        var min = Math.max(-r, -r - i); 
        var max = Math.min(r, r - i); 
        for (j = min; j <= max; j++){ 
         k = -1 * (i + j); 
         if(game.grid[i][j].termap != null){ 
          game.grid[i][j].termap.x = game.xcenter + game.hexwidth * .75 * i; 
          game.grid[i][j].termap.y = game.ycenter + game.hexheight * .5 * (j - k); 
         } else { 
          console.log("A bitmap is null."); 
          game.update = true; //still needs to be updated 
         } 
        } 
       } 
      game.stage.update(event); 
      console.log("UPDATED!"); 
      } 
     } 

game.update仅在所有位图创建后才设置为true。正如你可以看到如果你加载网站,(here是再次链接),控制台日志显示更新阶段之前创建的所有位图。这也显示在控制台打印语句中。如果您单击屏幕中心并拖动鼠标,则可以通过移动地图来强制更新,这会将game.update更改为true并正确强制更新舞台。我无法弄清楚为什么bitmaps没有立即显示,因为game.update只有在创建并添加到舞台后才被明确调用。位图确实具有可见属性,但默认值是true。

console screenshot

回答