[自製Javascript遊戲引擎][第1節][JavaScript基本介紹與工具安裝]
来源:互联网 发布:七天网络查询分数 编辑:程序博客网 时间:2024/06/05 07:38
大家好,我是傅老師。
你想學做遊戲嗎?
你想試試看自己從第0行開始做出整個遊戲嗎?
你想學先徒手自製引擎,再用引擎徒手自製遊戲嗎?(挖…惊讶這真的不會太難嗎?)
一點也不難!初中生就學得會!
趕快來收看我們全新的系列課程—<自製Javascript遊戲引擎>!
第1節
JavaScript工具安裝與快速體驗
在本節中,我們將帶您安裝所需工具,並且用最快的速度讓您取得Javascript的基礎經驗。
請先下載本課課件。
課件下載位址:http://pan.baidu.com/s/1csp36A
1-1. 工具安裝
在開始編寫JavaScript前,請讀者安裝這堂課的必備軟體:Chrome、Notepad++、以及2套插件(Plugin)。
首先,請讀者於下方的「網址1」下載Chrome並進行安裝;接著於「網址2」中下載Notepad++並進行安裝(本系列課程建議您使用Notepad++ 6.9.2版)。
網址1:https://www.google.com.tw/intl/zh-HK/chrome/browser/desktop/
網址2:https://notepad-plus-plus.org/download/v6.9.2.html
裝完Chrome及Notepad++之後,接下來裝2套Notepad++的插件(Plugin)。請開啟Notepad++,於上方的工作列中,點擊「外掛模組」。
開啟「外掛模組」的選單後,選擇「PluginManager」中的「ShowPlugin Manager」。
「PluginManager」的視窗出來後,在選單中找到「JSLint」和「JSTool」兩個插件(Plugin),打勾後點擊「Install」。
插件(Plugin)安裝完成後,Notepad++會如下圖一樣,通知有新的原件安裝進Notepad++,點選<是>重新啟動Notepad++便可以正常使用。兩套工具中,JSLint可用來糾錯,JSTool可用來排版,都是非常好用的小工具喔~
1-2. 顯示圖片
是的,我不打算從基礎語法教起。(什麼?。。。可是老師你剛剛說初中生都可以學會,那不從基礎語法教起我學得會嗎?)沒錯~我確定這套課程初中生學得會,因為同樣的課程我已經開過三梯了。不從基礎語法教起正就是初中生都學得會的奧密之一。
"你不可能在沒有經驗的狀況下,學會系統級別的理論。"
所以從現在開始,我要用最快的速度帶領讀者取得一些Javascript的經驗。好了~坐穩拉,我們要起飛囉!
將本節課件包中的<#class1>目錄解壓至桌面。以Notepad++開啟裡面的index.html檔,你會看到一個空白的檔案。請在檔案中寫入下列程式碼:
<html> <head> <title>This is my HTML page</title> </head> <body> <canvas id="game" width="800" height="600" style="background-color: blue;"></canvas> </body></html>
這。。看起來實在像是Windows死機啊!!(笑)不過沒關係,看出來這畫面程式間有什麼關係了嗎?夾在<title></title>標籤內的就是這個網頁的標題,下面的canvas就是螢幕中間的畫布,而畫布的顏色被我們使用CSS屬性<background-color: blue;>指定成藍色了。
猜猜看,下列畫面是如何修改而得呢?:
好的,接下來我們來顯示一些靜態圖片吧~請開啟課件找到<images>資料夾,盤點一下裡面的圖片。你應改會看到幾張可愛的像素風圖片(pixel art),其中有一張是蛋蛋老師的全身照<egg.png>。我們現在來試試看把蛋蛋老師畫到畫布上吧!
打開<index.html>修改程式:
<html> <head> <title>這是我的超級遊戲</title> <meta charset="utf8"> </head> <body> <canvas id="game" width="800" height="600" style="background-color: orange;"></canvas> <script> var canvas = document.getElementById("game"); var ctx = canvas.getContext("2d"); var img = new Image(); img.src = "images/egg.png"; img.onload = function(){ ctx.drawImage(img, 0, 0,32,32); }; </script> </body></html>
寫好後存檔,跳至Chrome內按下<F5>刷新。優呼~蛋蛋老師出現在左上角了!
在此我們大略解釋一下代碼的意義。包夾在<script></script>區間的部分,就是Javascript程式。我們要做的就是利用這段程式,回頭去修改之前已繪製於畫面上的canvas畫布。
- 首先以var canvas = document.getElementById(“game”),去取得id名稱為game這張畫布,取得畫布後放置於canvas這個變數中。
- 由於HTML原本canvas有意支援2D與3D兩種繪製模式,因此我們以canvas底下的canvas.getContext函數,將canvas詮釋為一塊2D內容並放置於ctx變數中。未來凡是需要繪製2D影像,均可透過ctx變數來繪製。
- 接著我們要做的是將<egg.png>讀入記憶體內。首先以new Image()產生一塊空白的影像,放置於img變數中。接著再以img.src指定讀檔位置,這條程式一經執行,電腦就會去將檔案搬進記憶體中。然而,這段搬動的過程需要一些時間,無法在瞬間完成。因此我們只好先跟電腦約定,"如果你讀檔讀完以後要幫我呼叫影像中的onload函數喔~",並且先填好onload函數的內容,交給電腦。
- img.onload這個funciton就是我們要跟電腦約定好的函數。我們可以看到他的內容只有一行:
ctx.drawImage(img,0,0,32,32);
我們之前說過,繪製畫布這件事可透過ctx來執行,指的就是這一行。這行的意思是:使用ctx將img影像繪製於座標(0,0)處,繪製影像寬高為(32,32)。
好的,我想現在大家基本上已經理解了各行程式的用意。現在傅老師要出一個題目了:底下這個畫面是怎麼顯示出來的呢?(提示:換圖、換位置、換大小)
非常好!如果你成功的作出了上一張畫面,那麼接下來是本節課的最後一個問題囉~
請問,底下這個畫面是怎麼顯示出來的呢?
有成功做出來嗎?非常好!答案就在課件包中的<解答.html>中,留給大家做個參考囉~
1-3. 結語
在本節中我們學到了:
- Notepad++安裝
- 在HTML頁面中添加畫布canvas
- 使用Javascript將圖檔繪製於canvas中
如何?用瀏覽器畫圖很有趣吧?希望你有所收穫,我們下次見!
- [自製Javascript遊戲引擎][第1節][JavaScript基本介紹與工具安裝]
- JavaScript自学第1讲:JavaScript基本介绍
- JavaScript 引擎指南1
- JavaScript 中的有限状态机,第 1 部分 (转自IBM DevWork)
- JavaScript引擎
- RequireJS:javascript模块化工具基本用法详解
- Javascript 基本-1
- JavaScript自学笔记第3讲:JavaScript基本数据类型介绍
- 深入了解webkit内核第一篇:JavaScript引擎深度解析
- 深入了解webkit内核第一篇:JavaScript引擎深度解析
- 如何使用chrome自带的Javascript调试工具
- 如何使用chrome自带的Javascript调试工具
- 如何使用chrome自带的Javascript调试工具
- 使用chrome自带的Javascript调试工具
- JavaScript语法着色引擎
- SpiderMonkey:Javascript引擎
- C#调用JavaScript引擎
- Javascript模板引擎
- unbuntu_16.04+Mongodb 启动报错:"/sys/kernel/mm/transparent_hugepage/enabled is 'always'"
- LayoutInflater和View.inflate布局时需要知道的原理
- 开源项目android-process-button使用和源码分析
- Threejs性能监视和可视化控制
- 树形dp____Magic boy Bi Luo with his excited tree( hdu 5834 2016ccpc网络赛)
- [自製Javascript遊戲引擎][第1節][JavaScript基本介紹與工具安裝]
- JAVA运算符优先级和结合性
- 92. Reverse Linked List II
- hashmap原理
- 倔
- 算法集训(一)水题
- leetcode之 Kth Smallest Element in a Sorted Matrix
- Android开发之http网络请求返回码问题集合。
- [NBUT 1646 Internet of Lights and Switches] 前缀异或和+二分