Дзіўныя паводзіны context.fillText () у HTML5/палатно

У мяне ёсць невялікая праблема з функцыяй context.fillText ().

Калі я выклікаць функцыю, выкарыстоўваючы яго, ён не малюе тэкст, калі я не называю гэта пасля таго, як я пачала «MainLoop». Усе context.fillRect() Называецца ў адной і той жа функцыі працуюць выдатна.

Here is my code. I write a couple of comment to highlight where it works or doesn't work.

var pause = true;

function draw() {
    if ( !pause ) {
        redraw_everything();
    }
    else {
        draw_popup();//WORKAROUND
    }
}

function draw_popup ( text ) {
    ctx.fillStyle = 'red';
    ctx.fillRect ( _x, _y, _w, _h );
    ctx.fillStyle = 'black';
    ctx.fillRect ( _in_x, _in_y, _in_w, _in_h );

    ctx.font = theight + "pt Orbitron";
    twidth = ctx.measureText ( text ).width;

    ctx.fillStyle = 'red';
    ctx.fillText ( text, _tx, _ty );  /** Draw the text */
    ctx.restore();
}

function init() {
    canvas = document.getElementById ( 'tutorial' );
    ctx = canvas.getContext ( '2d' );

    pause = false;
    draw();
    pause = true;
    setInterval ( 'draw()', 20 );
    draw_popup ( 'PacMan' );//DOESN'T WORK

    tutorial = document.getElementsByTagName( 'body' )[ 0 ];
    tutorial.onkeypress = function ( e ) {
        var c = String.fromCharCode( e.charCode ).toLowerCase();
        if ( c == 'p' ) {
             draw_popup ( 'Pause' );//IT WORKS
        }
    }
}

You can find the full source code here

UPDATE: As requested, I made a shorter example (not tested).

1
Гатова. Я спадзяюся, што гэта досыць кароткі і досыць зразумела
дададзена аўтар Andrea Carron, крыніца
Я знайшоў гэтую праблему. Я выкарыстоўваю шрыфт з калекцыі Google WebFont. У першы раз я выкарыстоўваю яго, шрыфт яшчэ не загружаны, таму ён не піша. Наступныя запыты маюць шрыфт ўжо загружаны, таму я працую
дададзена аўтар Andrea Carron, крыніца
Ці можаце вы вылучыць вашу праблему ў кароткі прыклад?
дададзена аўтар Jonas, крыніца
@AndreaCarron: Вы павінны апублікаваць, што ў якасці адказу, я думаю, так што пытанне не з'яўляецца без адказу.
дададзена аўтар Nickolay, крыніца

1 адказы

Я знайшоў гэтую праблему. Я выкарыстоўваю шрыфт з калекцыі Google WebFont. У першы раз я выкарыстоўваю яго, шрыфт яшчэ не загружаны, таму ён не піша. Наступныя запыты маюць шрыфт ўжо загружаны, таму я працую

0
дададзена