2016-11-25 69 views
0

我對javascript很陌生,我試圖編寫一個小項目,如PatatapPaper.js onKeyDown方法

我爲動畫使用Paper.js,爲事件偵聽器使用onKeyUp method,以便在按按鈕時顯示圖像。此代碼正常工作,但我不明白這種方法如何工作,我在做什麼?我是否再次定義該功能?我在大括號裏面定義了什麼? 功能的onkeyup(事件){..defining該函數?? ..}

(I具有與 「onFrame()」 方法相同的問題)。

//importing paper.js and howler.js 
 
//CREATING AN OBJECT OF LETTERS 
 
var keyData={ 
 
    q: { 
 
    sound: new Howl({ 
 
     src: ['sounds/bubbles.mp3'] 
 
     }), 
 
    color: '#1abc9c' 
 
    }, 
 
    w: { 
 
    sound: new Howl({ 
 
     src: ['sounds/clay.mp3'] 
 
    }), 
 
    color: '#2ecc71' 
 
    } //OTHER LETTERS HERE.. 
 
}; 
 

 
//CREATING CIRCLES ON THE SCREEN 
 
    var circles=[]; 
 
    function onKeyUp(event) { 
 
    if (keyData[event.key]){ 
 
     var maxPoint = new Point(view.size.width,view.size.height); 
 
     var randomPoint = Point.random(); 
 
     var point = randomPoint * maxPoint; 
 
     newCircle = new Path.Circle(point, 100); 
 
     newCircle.fillColor=keyData[event.key].color; 
 
     circles.push(newCircle); 
 
     keyData[event.key]['sound'].play() \t \t \t 
 
    } 
 
    }; 
 

 
//MAKE CIRCLES DISAPPEAR 
 
function onFrame(event) { 
 
    for(var i=0; i< circles.length;i++){ 
 
    \t circles[i].fillColor.hue += 1; 
 
\t circles[i].scale(0.99); 
 
\t if(circles[i].area < 1){ 
 
\t circles[i].remove(); 
 
\t circles.splice(i, 1); 
 
\t console.log(circles); 
 
\t } 
 
    } 
 
};
強大的文本

謝謝AdamW的回答。

我的問題是關於上面的行。這是沒有意義對我來說,這就像我在做

// ON PAPER.JS 
 
function onKeyUp(event){ 
 
    //do stuff.. 
 
}; 
 

 
// ON MY PROJECT 
 
function onKeyUp(event){ 
 
    //do other different stuff.. 
 
};

但是這樣一來,我將只「清除」的onkeyup()方法寫在Paper.js並優先我新的函數叫onKeyUp(),簡單的多態。 那麼,我爲什麼要這樣做呢? onFrame()方法也是如此。

回答

0

不知道你要求什麼樣的解釋,我不熟悉Paper.js。

一般地說函數的體被包裹在一個條件

if (keyData[event.key]) { 
    // do stuff 
} 

條件獲取從event參數和檢查key屬性,以查看是否有keyData具有該名稱的屬性。看看你的代碼,這似乎是'q'或'w'的關鍵值。如果它發現這個屬性,它會執行'do stuff'部分,否則會跳過它。

在我看來像「做的東西」部分

  1. 選擇了一圈
  2. 的中心點創建在該點一個圓圈100個出頭的半徑
  3. 填充圓形顏色
  4. 將該圓圈添加到名爲'circles'的現有數組中
  5. 從'keyData'中選擇一個條目,獲取其'sound'屬性並將其稱爲'play'方法。 '聲音'屬性是一個'嚎叫'的對象,我認爲嚎叫有一種遊戲方式。

簡而言之,它會產生彩色的磁盤和噪音。