2013-12-14 2 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

Это связано с тем, что изображение не было загружено с сервера к моменту запуска Дартс VM.

Чтобы исправить это, перед показом проигрывателя я проверил, что изображение загрузилось.

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

Действительно полезно, спасибо, это спасло меня от вытягивания волос. Эта проблема не возникает, если вы запускаете локально в Dartium, поэтому я ее не заметил, пока не запустил ее с онлайн-сервера, преобразованного через «pub build» в JS. –