iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0

打磚塊(block) - 布景提到,當圖片載入後,可以透過cansvas提供的function drawImage()將圖檔繪製在畫面中,然而此遊戲並非適合。

原因在於我們會需要清除原本的圖片,然後再次繪製;這時問題來了,花了好長一段時間在找尋清除的方式,然而canvas的設計是要能方便的「繪圖」,並非動態調整圖檔,所以能夠輕易地將圖片指定在想要的位置和大小,但後續就調整不了;
除非是用fillRect()、clearRect(),或是其提供的畫圓形函式;但這次的遊戲想要讓畫面不要那麼單調的只有方形或圓形,想要使用自己的圖檔,因此回歸到最原始在HTML加上<img>載入圖檔,然後在css或是javascript做動態位置的調整。

HTML

<img id="ball" src="./imgs/ball.png" alt="red ball">

JavaScript

let img_ball = document.getElementById("ball");
img_ball.style.top = "xxxpx";
img_ball.style.left = "xxxpx";

在布景文章也講述到,想讓遊戲畫面置中,可以利用CSS flex,在pararent div指定其特性要水平置中後,包在裡面的child div,就會自動置中了,然而在判斷邊界時,沒辦法只看遊戲畫面的 0~width 或 0~height, 有遇到一直加上水平位移的長度後,會直接超出遊戲畫面。

必須整個背景的寬高加減中間遊戲畫面的寬高運算,來達到想要的邊界設定,推測這部分和對於flex的了解度還不夠導致,想像應該能指定child都會是在parent內部,這部分還需要再花點時間研究和更新文章。


上一篇
打磚塊(block) - 功能設計說明
下一篇
打磚塊 - 回歸 Canvas
系列文
那些八年級生的經典迷你遊戲,前端JS自學之路20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言