我已經劈砍而去,在這個問題在過去的三個小時,不能找出哪裏出了問題。基本上,我試圖爲小遊戲繪製一個基於瓦片的「級別」。據我瞭解,畫布應在已繪製的矩形上繪製新的矩形。HTML5畫布 - 繪圖遊戲關卡,重疊以前繪製的矩形
我想要設置它以便有一個基本繪製背景的函數,另一個函數會在其上繪製高光。 「亮點」是牆的頂部,背景顯示了它的一面。我想在上面畫出高光,因爲理想情況下我最終希望在它們之間繪製一個角色,這樣高光會在角色頂部(就好像它在牆後),而背景則在角色背後。
水平(無亮點層)的背景和形狀看起來像這樣:http://howtivity.com/leveldrawing
出於某種原因,我遇到了很多的努力得出的亮點層麻煩。我想要偏移背景圖層上方50px的圖層以給出三維牆的印象,並且我希望任何沒有牆的透明空間以便背景仍然顯示。當我試着使用幾乎相同的功能,其唯一的區別是向上偏移層50像素繪製層,並設置無牆的填充樣式,以透明的,它看起來像這樣:http://howtivity.com/leveldrawing/highlight.html
我已經設定,打印文本,以便我可以診斷它可能出錯的地方,但文本已經正確顯示。我覺得我或者誤解了畫布的繪製方式,或者造成了某種我只是看不到的錯誤。
<canvas height="600" width="1000" style="position: absolute; z-index: 0; background: transparent;" id="background">
</canvas>
<script>
var level =
[
[1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,1,0,0],
[1,0,1,0,1,1,0,1,0,1],
[0,0,0,0,0,1,0,0,0,1],
[1,0,0,0,0,0,0,1,1,1],
[1,1,1,1,1,1,1,1,1,1]
];
var bg = document.getElementById("background");
var bgContext = bg.getContext("2d");
var drawLevel = function() {
var levelDrawX = 0;
var levelDrawY = 0;
for (levelRow = 0; levelRow < 6; levelRow++)
{
for (levelCol = 0; levelCol < 10; levelCol++)
{
levelDrawX = (100 * levelCol);
if (level[levelRow][levelCol]==1)
{
bgContext.fillStyle = "#ffe680";
bgContext.fillRect(levelDrawX, levelDrawY, levelDrawX + 100, levelDrawY + 100);
} else {
bgContext.fillStyle = "#8dd35f";
bgContext.fillRect(levelDrawX, levelDrawY, levelDrawX + 100, levelDrawY + 100);
}
}
levelDrawY += 100;
}
};
var drawHighlights = function() {
var levelDrawX = 0;
var levelDrawY = 0;
for (levelRow = 0; levelRow < 6; levelRow++)
{
for (levelCol = 0; levelCol < 10; levelCol++)
{
levelDrawX = (100 * levelCol);
if (level[levelRow][levelCol]==1)
{
bgContext.fillStyle = "#000";
} else {
bgContext.fillStyle = "transparent";
}
bgContext.fillRect(levelDrawX, levelDrawY-50, levelDrawX+100, levelDrawY+50);
}
levelDrawY += 100;
}
};
drawLevel();
drawHighlights();
任何幫助將非常感謝!謝謝!
謝謝!這是真的......我會解決它的例子。但是,我仍然無法正確繪製兩者。當drawHighlights中的顏色設置爲「透明」時,它將停止繪製級別爲[2] [2]的透明空間。我會上傳一個工作演示。 – 2013-04-29 02:25:17
這裏是一個工作演示:http://howtivity.com/leveldrawing/ – 2013-04-29 02:27:15
再次感謝,很抱歉,我沒有解釋清楚。不,我不想添加半透明陰影。基本上我想繪製背景,然後在其上疊加另一層「高光」。如果從上方觀看,亮點將是牆的頂部,並且背景將是牆的一側。我想抵消陰影頂部50px以上的高光,給它一個三維的幻覺。我會稍微修改演示以顯示背景,因爲它應該完成:http://howtivity.com/leveldrawing – 2013-04-29 03:51:33