2016-06-21 1 views
3

ist mein jsfiddle führen: jsfiddlemeine Leinwand einen Kreis zeichnen will, aber hier in einer Eclipse

Ich kann dieser Code Ergebnis in einer Finsternis nicht herausfinden, warum, bitte nehmen Sie ein unter meinem Code aussieht, ist dies eine Animation mit requestAnimationFrame.

function circleGraph(radius) { 
    return { 
    type: 'circle', 
    radius: radius, 
    currentAngleAnimate: 0 
    } 
} 
$(document).ready(function() { 
    var canvas = document.getElementById('mycanvas'); 
    var context = canvas.getContext('2d') 
    var width = canvas.width; 
    var height = canvas.height; 
    var circleObj = circleGraph(50); 

    context.lineWidth = 1; 
    context.strokeStyle = '#ad2323'; 
    context.fillStyle = '#ad2323'; 

    var draw = function() { 
    context.clearRect(0, 0, width, height); 
    context.beginPath(); 
    circleObj.currentAngleAnimate += Math.PI * 2/60; 
    context.arc(width/2, height/2, circleObj.radius, -Math.PI/2, circleObj.currentAngleAnimate, false); 
    context.stroke(); 
    context.lineTo(width/2, height/2); 
    context.fill(); 
    requestAnimationFrame(draw) 
    } 
    requestAnimationFrame(draw); 
}); 

Antwort

3

Ihre Leinwand ein default width and height hat von 300 x 150 Pixel. Dies sind die Attribute des Canvas-HTML-Elements. Anschließend dehnen Sie die Zeichenfläche über CSS-Regeln auf 400 x 400 Pixel - die CSS-Regeln wirken sich jedoch nur auf die Darstellung der Zeichenfläche aus, nicht auf die Auflösung der Zeichenfläche.

Lösung: Ihre CSS entfernen und die Breite und Höhe Attribute gesetzt:

<canvas id="mycanvas" width="400" height="400></canvas> 
+0

Richtig, aber die Antwort ist nicht angemessen. Diese Frage wurde schon viele Male gestellt und beantwortet. Anstatt den Stapel doppelter Fragen und Antworten hinzuzufügen, versuchen Sie bitte, den Fragesteller auf eines der vielen Fragen und Antworten zu verweisen. Ziehen Sie in Erwägung, Ihre Antwort zugunsten einer dieser Fragen zu löschen. – markE

+0

@markE Gut, du hast ein Duplikat gefunden! Vermeiden Sie es jedoch, herablassende Kommentare zu hinterlassen, indem Sie andere Benutzer bitten, ihre Antworten zu löschen. Sie können gerne Ihre persönlichen Ansichten hier mit der Community diskutieren: http://meta.stackoverflow.com/questions/253735/is-it-wrong-to-dowvote-a-good-answer-to-a-duplicate-question und http://meta.stackoverflow.com/questions/252009/should-there-be-a-deterrent-for-answering-obvious-duplicate-questions –

+0

Es ist sicherlich keine persönliche Sichtweise, dass offensichtlich doppelte Fragen und Antworten vermieden werden sollten Stackoverflow weniger überladen zu halten. Es ist eine Politik, keine doppelten Antworten zu posten - daher die Fähigkeit "Schließen: Duplikat von ...". Übrigens ist meine Einstellung eher frustriert als herablassend. Nichts Persönliches. : - // – markE

1

entfernen height und width von Ihrer CSS-Regel:

#mycanvas { 
    border: thin solid green; 
    position: relative; 
} 

Nun fügen width und height durch HTML-Attribute und es funktionieren soll:

<canvas id="mycanvas" height="400" width="400"></canvas>