获得画布宽度问题

时间:2015-07-10 00:02:27

标签: javascript html css canvas

好。所以我有一个id为mainCanvas的画布,在同一个html页面上有javascript和css。我想拥有它,以便我可以在javascript中创建画布的某个宽度(例如,红色矩形是画布的宽度和高度)。所以我在css中将画布宽度设置为60%,高度设置为500px(高度不是问题),我有代码,

var canvas = document.getElementById("mainCanvas");
var context = document.getContext("2d");

var width = canvas.width;
var height = canvas.height;

获取画布的宽度和高度。然后我有一个setInterval()函数,它有一个调用和更新函数的游戏函数,以及一个渲染函数。

function game() {
    update();
    render();
}

function update() {

}

function render() {
    context.fillStyle = "red";
    context.fillRect(0, 0, width, height);
}

setInterval(function() {
    game();
}, 1000/30);

所以我有一个矩形,其宽度变量为width参数,height变量为height参数。

这样更容易看到,这是一个片段。



<html>
<head>
	<title></title>
	<style type="text/css">
		body {
			background-color: #222222;
		}
		canvas {
			background-color: #1f1f1f;
			width: 60%;
			height: 500px;
		}
	</style>
</head>
<body>
	<canvas id="mainCanvas"></canvas>
	<script type="text/javascript">
		
		var canvas = document.getElementById("mainCanvas");
		var context = document.getContext("2d");

		var width = canvas.width;
		var height = canvas.height;

		function game() {
			update();
			render();
		}

		function update() {

		}

		function render() {
			context.fillStyle = "red";
			context.fillRect(0, 0, width, height);
		}

		setInterval(function() {
			game();
		}, 1000/30);

	</script>
</body>
</html>
&#13;
&#13;
&#13;

为什么宽度和高度不起作用?我在stackoverflow上看到了很多问题,但那些不能解决我的问题。

2 个答案:

答案 0 :(得分:0)

更改行:

var context = document.getContext("2d");

要:

var context = canvas.getContext("2d");

答案 1 :(得分:0)

将其更改为:

cummax.Date <- function(x) as.Date(cummax(as.integer(x)),'1970-01-01');
df$after.date <- ave(df$after.date,df$ID,FUN=cummax);
df;
##   ID before.date after.date
## 1  1  1996-10-01 1996-12-01
## 2  1  1998-01-01 2003-09-30
## 3  1  2000-01-01 2004-12-31
## 4  2  2001-01-01 2006-03-31
## 5  3  2001-01-01 2006-09-30
## 6  4  2001-01-01 2005-09-30
## 7  4  2004-10-01 2005-09-30
## 8  4  2004-10-03 2005-09-30
og <- with(df,c(0,cumsum(!(ID[-length(ID)]==ID[-1] & after.date[-length(after.date)]>before.date[-1]))));
og;
## [1] 0 1 1 2 3 4 4 4
df <- do.call(rbind,by(df,og,function(g) transform(g[1,],after.date=g$after.date[nrow(g)])));
df;
##   ID before.date after.date
## 0  1  1996-10-01 1996-12-01
## 1  1  1998-01-01 2004-12-31
## 2  2  2001-01-01 2006-03-31
## 3  3  2001-01-01 2006-09-30
## 4  4  2001-01-01 2005-09-30