2013-12-14 51 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。 –