0

キャンバスに画像を追加しようとしていますが、うまくいかないようです。コードを調べたところ、コードに問題はありませんが、他の誰かができる可能性があります。

これは私のJSファイルです。

if (window.addEventListener) 
{
    window.addEventListener( 'load', onLoad, false);
}

function onLoad()
{
var canvas;
var context;

function initialise() 
{
    canvas = document.getElementById('canvas'); 

    if (!canvas.getContext)
    { 
        alert('Error: no canvas.getContext!'); 
        return; 
    }

    context = canvas.getContext('2d'); 
    if (!context)
    { 
        alert('Error: failed to getContext!'); 
        return; 
    }

}
}

function draw()
{
    var sun = new Image();
    sun.src = 'images.sun.png';
    context.drawImage(sun, 100, 100);
}

onLoad();
draw(); 

これが私のHTMLメイバイです。これは問題を見つけるのに役立ちます

<!doctype html>
    <html>
        <head>
            <title>Test</title> <script type="text/javascript" src="javascript/canvas.js"></script>
        </head>
        <body>
            <canvas id="canvas" width="800" height="600">
                Your browser does not support the canvas tag
            </canvas>

        </body>
    </html>
4

2 に答える 2

1

問題は、onLoad()でcanvasとcontextを宣言しますが、draw()でそれにアクセスしようとすることです。

したがって、それらをグローバルにすることで、問題は解決されます。

var canvas;
var context;

if (window.addEventListener) {
    window.addEventListener('load', function(){
        onLoad();
    }, false);
}

function onLoad() {
    initialise();
    draw();
}

function initialise() {
    canvas = document.getElementById('canvas');

    if (!canvas.getContext) {
        alert('Error: no canvas.getContext!');
        return;
    }

    context = canvas.getContext('2d');
    if (!context) {
        alert('Error: failed to getContext!');
        return;
    }

}

function draw() {
    var sun = new Image();
    sun.addEventListener('load', function(){
        context.drawImage(sun, 100, 100);
    }, false);
    sun.src = 'http://puu.sh/1yKaY';
}
于 2012-12-09T09:48:04.087 に答える
0

onload イベントで画像を描画してみてください

 sun.onload = function() {
    context.drawImage(sun, 100, 100);
 };
于 2012-12-09T09:36:37.433 に答える