2013-12-14 52 views
2

嘗試使用Canvas和Dart渲染圖像,但我沒有運氣。Dart Canvas not drawing image

任何人都可以指向正確的方向嗎?請參閱附件代碼。

import 'dart:html'; 

class Board{ 

    CanvasElement canvas; 
    CanvasRenderingContext2D context; 

    Board(){ 
    canvas = new CanvasElement(width: 600, height: 600); 
    context = canvas.context2D; 
    } 

    getCanvas(){ 
    return canvas; 
    } 

    getContext(){ 
    return context; 
    } 

} 

class Player{ 

    ImageElement player; 
    CanvasRenderingContext2D context; 
    CanvasElement canvas; 

    Player(theCanvas, theContext){ 
    canvas = theCanvas; 
    context = theContext; 
    } 

    drawPlayer(){ 
    player = new Element.tag("img"); 
    player.id = "#thePlayer"; 
    player.src = "img/player.png"; 
    context.drawImage(player, 100, 100); 
    } 

    getPlayer(){ 
    return player; 
    } 

} 

void main() { 
    Board b = new Board(); 
    Player p = new Player(b.getCanvas(), b.getContext()); 
    p.drawPlayer(); 

} 

回答

3

這是因爲在Dart VM運行時圖像尚未從服務器加載。

爲了解決這個問題,在顯示玩家之前,我檢查了圖像已經加載。

player.onLoad.listen((value) => context.drawImage(player, 0, 0)); 
+0

真的很有用,謝謝,這節省了我很多頭髮拉。如果在Dartium本地運行,則不會發生此問題,這就是爲什麼直到我從聯機服務器運行它時才注意到它,通過「pub build」轉換爲JS。 –