所以,我想創建一個使用HTML5的minecraft網站主題。我在HTML5/Javascript中有點不穩定(有一段時間沒有用過),我需要一些幫助。我正在嘗試計算可以放在屏幕上的16x16px數量的瓷磚。然後,爲屏幕背景隨機「生成地圖」。然後,我使用相同的2 for循環來生成地圖,以填充畫面(在生成過程中分配畫面路徑)。問題是,畫布完全是白色的。任何人都可以挑出問題,如果可能的話給我任何提示?提前致謝!這裏是我的HTML5代碼:HTML5在畫布上使用for循環繪製圖片?
<!DOCTYPE html>
<html>
<head>
<title>Minecraft Background Check</title>
</head>
<body>
<canvas id="bg" style="position:fixed; top:0; left:0; border:1px solid #c3c3c3; width: 100%; height: 100%;"></canvas>
<script type="text/javascript">
"use strict";
var c = document.getElementById("bg");
var ctx = c.getContext("2d");
ctx.canvas.width = window.innerWidth;
ctx.canvas.height = window.innerHeight;
var width = Math.ceil(window.innerWidth/16);
var height = Math.ceil(window.innerHeight/16);
for (var x=0;x<width;x++)
{
for(var y=0;y<height;y++)
{
var rand = Math.floor(Math.random()*11);
var texLoc = getImageNameFromRand(rand,y,height);
var img=new Image();
img.onload = function(){
return function() {
ctx.drawImage(img,x*16,y*16);
};
};
img.src=texLoc;
}
}
function getImageNameFromRand(rand,yVal,maxY)
{
var dirt = 'dirt.png';
var stone = 'stone.png';
var cobble = 'cobble.png';
var mosscobble = 'mosscobble.png';
var bedrock = 'bedrock.png';
if(yVal===0)
{
return dirt;
} else if(yVal<3)
{
if(rand < 7) {
return dirt; }
else {
return stone; }
} else if(yVal<5)
{
if(rand < 4) {
return dirt; }
else {
return stone; }
} else if(yVal<maxY-2)
{
if(rand === 0) {
return dirt; }
else if(rand < 4) {
return cobble; }
else if(rand < 5) {
return mosscobble; }
else {
return stone; }
} else if(yVal<maxY-1)
{
if(rand < 4) {
return bedrock; }
else {
return stone; }
} else if(yVal<maxY)
{
if(rand < 7) {
return bedrock; }
else {
return stone; }
} else {
return bedrock; }
return bedrock;
}
</script>
</body>
</html>
謝謝,但我仍然得到一個空白的畫布。還有什麼不對嗎?再次感謝。 – Flafla2 2012-03-07 01:32:40
您是否檢查過畫布以確保它佔據您期望的空間?例如,我會拋棄'width:100%'和'height:100%',而使用'right:0;底部:0'使它伸展整個窗口(這應該適用於'position:fixed')。否則,還有一大堆你必須做的事情來達到100%的寬度和高度。 – Jeremy 2012-03-07 01:55:36