为什么我的函数 return 在我松开按键时值?
Why my function return value when I release the key?
我知道这可能是一个愚蠢的问题,但我无法弄清楚我在 p5.js 中的代码发生了什么(我使用在线编辑器)。
我正在制作一个简单的贪吃蛇游戏,但是当我调用该函数来添加某个值来移动头部(现在只是头部)时,它 returns 我想要的值但是下次再做当我释放钥匙时,尽管我也这样称呼:
function keyReleased(){
return false;
}
这些是我在草图文件中调用的函数。
let w = 87;
let a = 65;
let s = 83;
let d = 68;
let stepToDo = 10;
function keyPressed(axis){
if (axis === 0){
if(keyCode === a){
keyCode = 0;
return -stepToDo;
} else if(keyCode === d){
keyCode = 0;
return stepToDo;
} else {
return 0;
}
} else if (axis === 1) {
if(keyCode === w){
keyCode = 0;
return -stepToDo;
} else if(keyCode === s){
keyCode = 0;
return stepToDo;
} else {
return 0;
}
}
}
function keyReleased(){
return false;
}
这是草图文件。
let arrTest = [200, 200];
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
arrTest[0] = arrTest[0] + keyPressed(0);
arrTest[1] = arrTest[1] + keyPressed(1);
keyReleased();
//console.log(arrTest);
rect (arrTest[0], arrTest[1], 10, 10);
}
Link 到草图本身 https://editor.p5js.org/antolab/sketches/_Lzz41cos
keyPressed()
function is an event listener。
您不必从主 draw()
循环中调用它;相反,它会在每次按下键时自动调用。这样你就可以使用它来根据输入键改变你的位置数组。例如如下:
function keyPressed() {
if (keyCode === a) {
arrTest[0] = arrTest[0] - stepToDo;
} else if (keyCode === d) {
arrTest[0] = arrTest[0] + stepToDo;
} else if (keyCode === w) {
arrTest[1] = arrTest[1] - stepToDo;
} else if (keyCode === s) {
arrTest[1] = arrTest[1] + stepToDo;
}
}
请注意,因为我们没有在 keyPressed()
函数中定义新的 arrTest
变量,所以它将自动访问您在上面进一步定义的变量。
Here为对应的修改草图
keyPressed() 函数在您的代码中似乎执行了“两次”的原因是它作为 every 迭代的一部分被执行 draw()
按下一个键后自动循环和。
我知道这可能是一个愚蠢的问题,但我无法弄清楚我在 p5.js 中的代码发生了什么(我使用在线编辑器)。
我正在制作一个简单的贪吃蛇游戏,但是当我调用该函数来添加某个值来移动头部(现在只是头部)时,它 returns 我想要的值但是下次再做当我释放钥匙时,尽管我也这样称呼:
function keyReleased(){
return false;
}
这些是我在草图文件中调用的函数。
let w = 87;
let a = 65;
let s = 83;
let d = 68;
let stepToDo = 10;
function keyPressed(axis){
if (axis === 0){
if(keyCode === a){
keyCode = 0;
return -stepToDo;
} else if(keyCode === d){
keyCode = 0;
return stepToDo;
} else {
return 0;
}
} else if (axis === 1) {
if(keyCode === w){
keyCode = 0;
return -stepToDo;
} else if(keyCode === s){
keyCode = 0;
return stepToDo;
} else {
return 0;
}
}
}
function keyReleased(){
return false;
}
这是草图文件。
let arrTest = [200, 200];
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
arrTest[0] = arrTest[0] + keyPressed(0);
arrTest[1] = arrTest[1] + keyPressed(1);
keyReleased();
//console.log(arrTest);
rect (arrTest[0], arrTest[1], 10, 10);
}
Link 到草图本身 https://editor.p5js.org/antolab/sketches/_Lzz41cos
keyPressed()
function is an event listener。
您不必从主 draw()
循环中调用它;相反,它会在每次按下键时自动调用。这样你就可以使用它来根据输入键改变你的位置数组。例如如下:
function keyPressed() {
if (keyCode === a) {
arrTest[0] = arrTest[0] - stepToDo;
} else if (keyCode === d) {
arrTest[0] = arrTest[0] + stepToDo;
} else if (keyCode === w) {
arrTest[1] = arrTest[1] - stepToDo;
} else if (keyCode === s) {
arrTest[1] = arrTest[1] + stepToDo;
}
}
请注意,因为我们没有在 keyPressed()
函数中定义新的 arrTest
变量,所以它将自动访问您在上面进一步定义的变量。
Here为对应的修改草图
keyPressed() 函数在您的代码中似乎执行了“两次”的原因是它作为 every 迭代的一部分被执行 draw()
按下一个键后自动循环和。