我是javascript的新手,我正在尝试编写类似Patatap的小项目。
我正在使用Paper.js制作动画,使用onKeyUp method制作事件监听器,以便在按下按钮时显示图像。这段代码工作正常,但我不明白这种方法是如何工作的,我在幕后做什么?我是否再次定义该功能?我在大括号里面定义了什么? function onKeyUp(event){..定义该函数?? ..}
(与“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()
}
};
//MAKE CIRCLES DISAPPEAR
function onFrame(event) {
for(var i=0; i< circles.length;i++){
circles[i].fillColor.hue += 1;
circles[i].scale(0.99);
if(circles[i].area < 1){
circles[i].remove();
circles.splice(i, 1);
console.log(circles);
}
}
};
感谢AdamW的回答。
我遇到的问题是关于上面这一行。这对我来说没有意义,就像我在做什么
// ON PAPER.JS
function onKeyUp(event){
//do stuff..
};
// ON MY PROJECT
function onKeyUp(event){
//do other different stuff..
};
但是这样我只会“清除”写在Paper.js上的onKeyUp()方法并优先考虑我的新函数onKeyUp(),只是多态。 那么,为什么我这样做?对于onFrame()方法也一样。
答案 0 :(得分:0)
不确定您要求的解释是什么,我对Paper.js不熟悉。
一般而言,函数体包含在条件
中if (keyData[event.key]) {
// do stuff
}
条件从key
参数获取event
属性,并检查keyData
是否具有该名称的属性。看看你的代码,这似乎是&#39; q&#39;的关键价值。或者&#39; w&#39;。如果它发现了它所做的财产那就做了什么呢?否则它会跳过它。
在我看来,他们喜欢这样做的事情。节
简而言之,它会产生彩色磁盘和噪音。