Skip to content
stereomp3 edited this page Jun 12, 2021 · 31 revisions

5/21

Q : 可以用書籤做案按鈕變換內容嗎?

A : 可以,使用5/28教的hash

Q : requestAnimationFrame(call back)

A : 就是遞迴函式

Q : 為甚麼要寫兩個requestAnimationFrame

A : 第一個是先執行

Q : document.addEventListener("keydown",function(e){}) e是甚麼意思

A : mouse event,callback函數

Q : pingpong裡面球的 ? 和 :是什麼意思

A : 就是if...else...(?...:...)的意思
EX : 
var x = 3, y = 5
function max(a, b){
    return a>b ? a : b
}

console.log(x, y)//這個會印出5,因為a>b才會印出a

Q :

function getMousePos(canvas, evt) {
        var rect = canvas.getBoundingClientRect();//方法返回元素的大小及其相對於窗口的位置
        return {
          x: evt.clientX - rect.left,
          y: evt.clientY - rect.top
        };
      }

裡面的evt到底是幹嘛的?x, y為什麼沒有變數類型?

A : 

5/28

Q : $代表甚麼

A : 可以代表任何一個東西,可以是變數,可以是函式,這裡代表JQuery

Q : append()//動態和一般的差在哪

A : 這個是可以不把<canvas>或是其他的物件寫在html裡面,直接利用JS去觸發。效能高一些

6/04

Q : 裡面的router後面的函數為甚麼不用加()?

A : 因為他只是對應的格式,要對應後面的 for (let [regexp, f] of routeMap)真正觸發函式的是在後面,下面會解說

Q : window.onhashchange的funtion裡for的regexp

A : 函式長這樣
window.onhashchange = function () {
  var hash = window.location.hash.trim().substring(1)//把hash標籤的空白去掉再從第2個字開始取
  for (let [regexp, f] of routeMap) { //比對標籤,如果一樣就觸發那個函式
    //這裡的routeMap格式就跟[regexp, f] 一樣,前面是放正規表達式
    var m = hash.match(regexp) //match是專門用來和正規表達式作搭配的,後面會介紹正規表達式
    if (m) {
      f(m, hash)//處發函式
      break
    }
  }
}

Q : section的功能和div的功能

A : div可以表達所有那些section

https://www.w3schools.com/html/html_layout.asp

problem:

A : <br>
lang 是代表預設語言 <br>
charset="utf-8" , 沒寫的話有些瀏覽器會以為是別種編碼,例如 ISO8859-1,於是就會顯示錯誤,變成亂碼! <br>
iframe 是網頁裡的一個嵌入視窗,可以嵌入顯示另一頁的內容。 <br>

Q : keycode好像被淘汰了,有甚麼可以取代的??

A : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
把event.keycod(用數字決定按鍵)改成event.code(用Key?決定按鍵)

Q : 如何控制window.requestAnimationFrame(loop, canvas);的速度??

A : 設callback變數
EX :
var fps, fpsInterval, startTime, timestamp = Date.now(), preTimestamp, progress;

function startAnimating(fps) {
  fpsInterval = 1000 / fps;
  preTimestamp =  Date.now();
  startTime = preTimestamp;
}

function MainGame(){
    startAnimating(12);//設置fps
    var loop = function(){ 
      timestamp =  Date.now();//調整速率
      progress = timestamp - preTimestamp;
      if (progress > fpsInterval)
      {
        //遊戲內容
      }
      window.requestAnimationFrame(loop, canvas);
    }
    window.requestAnimationFrame(loop, canvas);
}

Q : 為什麼有些變數類型要用const?

A : JS最常用的3種變數類型var(可以後宣告先使用), let(宣告後使用)
const(宣告後如果是數值就會固定,如果是宣告矩陣或class,可以改裡面的值,但不可以改型態)

Q : 11.app的tex裡面的var lines = texArea.value.trim().split('\n')是幹嘛的

A : trim()代表把texArea.value裡的空白去除,而split('\n')是把裡面的每個字加入矩陣,再用\n分開

Q : element.style {}是幹嘛的

A : 指的是現在選取的網頁區域style值,可以勾選看要不要啟用

Q : =>箭頭函式是什麼

A : 箭頭基本上是函式的縮寫
EX : f1 = function(n){retrun n+3} 可以用箭頭寫成 f2 = (n) = >n+3

Q : https://developer.mozilla.org/zh-TW/docs/Web/API/window/requestAnimationFrame 裡面函式的timeStep為甚麼不用宣告?

A : window.requestAnimationFrame()他會把裡面的值傳回一個參數,所以會帶入timeStep

Q : ?是指什麼意思(App - blog)(canvus - pinpong)?

A : 

Q : 我的伺服器為甚麼連不到?

A : 

Clone this wiki locally