2012-05-14 73 views
0

我正在開發一個項目,該項目需要我通過javascript來控制紙張,而不是使用普通的paperscript路徑。我目前被卡住,因爲我似乎無法弄清楚一個奇怪的行爲。這是我正在運行的代碼的簡化版本嘗試直接從javascript控制Paper.js時出現奇怪行爲

paper.install(window); 
$(document).ready(function() { 
    paper.setup("canvas"); 
    Game.ship = new Ship(view.center, 1) // Essentially calls new Raster("imgid"); and positions it 
    view.draw(); 
}); 

由於某些原因,此代碼導致空白畫布。奇怪的是,如果我在幾秒鐘後在我的開發控制檯中調用new Ship(...),那麼柵格在柵格上渲染就會很好,因爲它應該如此。我也注意到,當我看到Game.ship.elem.__canvas的值時,即使DOM中沒有這樣的畫布,我也會看到大小爲32,32的畫布元素。

我假設這與時間有關,但我似乎無法弄清楚我必須做些什麼才能使其工作,除了使用setTimeout創建柵格的令人難以置信的混亂方法幾秒鐘後調用$(document).ready()

任何人對這裏發生了什麼有什麼想法,或者是什麼可能導致我走向正確的方向?

回答

2

其實我自己弄明白了。對於遇到此問題的任何人來說,問題實際上是因爲在圖像加載完成之前,ready()函數被稱爲

因此,new Raster()調用將一個不可靠的圖像加載到畫布中,導致空白結果!

+0

我在使用紙柵格時遇到了同樣的情況。我結束了使用[imagesloaded](https://github.com/desandro/imagesloaded)。 – bmacnaughton

相關問題