Я очень новичок в JS с HTML5, и я не могу получить очень простой код для работы. Я сделал холст, приложил его к телу и попытался написать текст, но ничего не появилось.
<!doctype html>
<html lang="en">
<head>
<meta charset='utf-8'>
<title>Test Game</title>
</head>
<body>
<script type="text/javascript">
var CANVAS_WIDTH=480;
var CANVAS_HEIGHT=320;
var canvasElement=$("<canvas width='"+ CANVAS_WIDTH +"'height='"+CANVAS_HEIGHT+"'></canvas>");
var canvas = canvasElement.get(0).getContext("2d");
canvasElement.appendTo('body');
</script>
<script type="text/javascript">
var FPS = 30;
setInterval(function(){
update();
draw();
},1000/FPS);
function update(){
}
function draw(){
canvas.fillStyle = "#000";//Sets colour to black
canvas.fillText("Sup Bro!",50,50);
}
</script>
</body>
</html>
Раньше я не использовал основной сценарий jQuery, поэтому он терпит неудачу. Кроме того, я бы рекомендовал использовать функции jQuery для добавления атрибутов вместо использования строк.
<!doctype html>
<html lang="en">
<head>
<meta charset='utf-8'>
<title>Test Game</title>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>
<body>
<script type="text/javascript">
var CANVAS_WIDTH = 480;
var CANVAS_HEIGHT = 320;
var canvasElement = $("<canvas>")
.attr('width', CANVAS_WIDTH)
.attr('height', CANVAS_HEIGHT);
var canvas = canvasElement.get(0).getContext("2d");
canvasElement.appendTo('body');
var FPS = 30;
setInterval(function () {
update();
draw();
}, 1000/FPS);
function update () {
}
function draw () {
canvas.fillStyle = "#000"; // Sets colour to black
canvas.fillText("Sup Bro!", 50, 50);
}
</script>
</body>
</html>
Я также изучаю HTML5. Как и предыдущий человек, вы используете jQuery ($) без включения библиотеки.
Кроме того, из того, что я узнал, я считаю, что лучше использовать requestAnimationFrame (https://developer.mozilla.org/en/docs/Web/API/window.requestAnimationFrame) вместо setInterval. Если вы хотите установить FPS, вы можете поместить условие в цикл ничьей, чтобы проверить, пришло ли время рисовать следующий кадр.
function draw(timestamp) {
requestAnimationFrame(draw);
if (timestamp - lasttimestamp > 1000 / framerate) {
lasttimestamp = timestamp - ((timestamp - lasttimestamp) % 1000 / framerate;
// ... put your drawing code in here
}
}
requestAnimationFrame
гораздо более эффективен, чем использование setInterval / setTimeout, а также более точен.