Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 重置p5.js中的动画_Loops_Animation_Reset_P5.js - Fatal编程技术网

Loops 重置p5.js中的动画

Loops 重置p5.js中的动画,loops,animation,reset,p5.js,Loops,Animation,Reset,P5.js,在p5js中,我在一个正在进行的循环中有一个3个角色的动画,但我希望他们在5秒后回到他们的原始位置。我还想让他们返回到他们的初始位置按下一个键,无论多少时间已经过去。我是个新手,不知道怎么做。这是完整程序的第一步。有什么想法吗?提前谢谢 var Ax = canvasW/2 - 125, Ay = canvasH/2; var speedAx = 5, speedAy = 6; var Bx = canvasW/2, By = canvasH/2; var speedB

在p5js中,我在一个正在进行的循环中有一个3个角色的动画,但我希望他们在5秒后回到他们的原始位置。我还想让他们返回到他们的初始位置按下一个键,无论多少时间已经过去。我是个新手,不知道怎么做。这是完整程序的第一步。有什么想法吗?提前谢谢

var Ax = canvasW/2 - 125,
    Ay = canvasH/2;
var speedAx = 5,
    speedAy = 6;

var Bx = canvasW/2,
    By = canvasH/2;
var speedBx = 6;

var Cx = canvasW/2 + 125,
    Cy = canvasH/2;
var Cy1 = 50,
    Cy2 = canvasH - 50;
var t = 0;
var startTime = 0;
var interval = 400; // miliseconds


function setup() {
  createCanvas(canvasW, canvasH);
  
  textAlign(CENTER, CENTER);
  textFont('Fredoka One');
  
  abcSize = 150;
  
}


function draw() {

  textSize(abcSize);
  text('A', Ax, Ay);
  Ax = Ax + speedAx;
  Ay = Ay + speedAy;
  
  if(Ax<abcSize/2 || Ax>width-abcSize/2){
        speedAx*=-1
    }
        if(Ay<abcSize/2 || Ay>height- abcSize/2){
        speedAy*=-1
    }

 
 fill('magenta');
  text('B', Bx, By);
  
  Bx = Bx + speedBx 
  
  if (Bx > canvasW-45) { 
    speedBx = -speedBx;
  }
  
  if (Bx < 0+45) { 
    speedBx = speedBx * -1;
  }
  
  
  fill('yellow');
  textSize(150);
  text('C', Cx, Cy);
  
  t = map(millis(), startTime, startTime + interval, 0.0, 1.0);
    t = constrain (t, 0, 1);
  
  Cy = Cy1 * (1 - t) + Cy2 * t;
  
  if (t >= 1) {
        t = 0;
        startTime = millis();
    //  update Cx1 and Cx2 here with new values from an array
    Cy1 = Cy2;
    Cy2 = random(100, 500);
    }
}
var Ax=canvasW/2-125,
Ay=canvasH/2;
var speedAx=5,
speedAy=6;
var Bx=canvasW/2,
By=canvasH/2;
var-speedBx=6;
变量Cx=canvasW/2+125,
Cy=canvasH/2;
var Cy1=50,
Cy2=canvasH-50;
var t=0;
var startTime=0;
var间隔=400;//毫秒
函数设置(){
创建画布(canvasW,canvasH);
textAlign(居中,居中);
textFont('Fredoka One');
abcSize=150;
}
函数绘图(){
textSize(abcSize);
文本('A',Ax,Ay);
Ax=Ax+speedAx;
Ay=Ay+speedAy;
如果(Axwidth abcSize/2){
speedAx*=-1
}
如果(Ayheight-abcSize/2){
speedAy*=-1
}
填充(“洋红”);
文本('B',Bx,By);
Bx=Bx+速度Bx
如果(Bx>canvasW-45){
speedBx=-speedBx;
}
如果(Bx<0+45){
speedBx=speedBx*-1;
}
填充(“黄色”);
文本大小(150);
文本('C',Cx,Cy);
t=映射(毫秒(),起始时间,起始时间+间隔,0.0,1.0);
t=约束(t,0,1);
Cy=Cy1*(1-t)+Cy2*t;
如果(t>=1){
t=0;
开始时间=毫秒();
//在此处使用阵列中的新值更新Cx1和Cx2
Cy1=Cy2;
Cy2=随机(100500);
}
}

您似乎已经了解了如何根据链接使角色在5秒后返回其原始位置。您可以使用功能
keyPressed()
检测按键。阅读更多。使用
按键()

function keyPressed() {
  Ax = canvasW / 2 - 125;
  Ay = canvasH / 2;
  Bx = canvasW / 2;
  By = canvasH / 2;
  Cx = canvasW / 2 + 125;
  Cy = canvasH / 2;
  resetTime = millis();
}
在您的代码结束时重置字符在按键上的位置