首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的主代码之前播放视频?

如何在我的主代码之前播放视频?
EN

Stack Overflow用户
提问于 2021-01-27 20:38:08
回答 1查看 50关注 0票数 0

我正在使用p5.jsp5.play为一个学校项目制作一个游戏,但是我不能让setTimeoutsetInterval工作,所以在我的游戏开始之前我不能做一个介绍性的游戏。

当基于时间的等待代码都不起作用时,我不知道该怎么做。每当我尝试使用它们时,我要么得到黑屏,要么得到卡住的静止图像。

有人能帮上忙吗?还有其他解决方案吗?

我的代码如下所示:

代码语言:javascript
复制
let sans; 
let song;
let gaster;
let player;
let playerImg;
let gasterImg;
let sansImg;
let box;
let box1;
let box2;
let box3;
let mode = 0;

let health;
let hp = 100;

let bone;
let boneImg;

let blaster;
let blasterImg;
let intro;
let end;




let movingRight = false;
let movingLeft = false;
let movingUp = false;
let movingDown = false;
let gamemode = true;
let direction = 0;

let xpos = 300;
let ypos = 300;
let speed = 3;


function preload() {
 soundFormats('mp3', 'ogg');
  song = loadSound('assets/call');
  intro = loadVideo('assets/intro.mp4');
  
  }
function setup() {
createCanvas(600, 600);
mode = 0;
//end
end = createVideo(['assets/end.mp4', 'assets/end.webm']);
end.hide();

//intro
intro = createVideo(['assets/intro.mp4', 'assets/intro.webm']);
intro.hide();


//box 
//top
box = createSprite(300, 300, 400, height/60);
box.shapeColor = color(255);
 box.setCollider('rectangle', 10, 10, 230, -100);

//bottom
box1 = createSprite(300, 500, 400, height/60);
box1.shapeColor = color(255);
 box1.setCollider('rectangle', -10, -10, 230, -100);

//box2
box2 = createSprite(500, 400, width/60, 210);
box2.shapeColor = color(255);
 box2.setCollider('rectangle', 0, 0, -140, 200);

//box3
box3= createSprite(100, 400, width/60, 210);
box3.shapeColor = color(255);
box3.setCollider('rectangle', 0, 0, -140, 200);



//sans
sans = createSprite(400, 160);
sansImg = loadImage('assets/sansC.gif');
sans.addImage('sans', sansImg);
sans.scale = 0.70;

//gaster
gaster = createSprite(180, 140);
gasterImg = loadImage('assets/g.gif');
gaster.addImage('gaster', gasterImg);
gaster.scale = 1.3;

//player 
player = createSprite(290, 350); 
playerImg = loadImage('assets/kebab.png');
player.addImage('player', playerImg);
player.scale-=0.30;

//bone 
bone = createSprite(100, 400);
boneImg = loadImage('assets/Sbone.png');
bone.addImage('bone', boneImg);
bone.setSpeed(3,direction);

//healthbar
health = createSprite(250, 530, 100, 20);
health.shapeColor = color(255, 255, 0);
health.width = hp*3;


//---------------------------------------------------------------------------------------
}
//mode 0
function draw() {
background(0);
fill(255);
mode = 0;
if (mode == 0) {
  textSize(30);
  text("Press mouse button", 160, 300);
  
}

 //mode 1
 if (mode == 1){
    image(intro, -400, -190, width*2.3, height*2.3);
     intro.play();
     setTimeout(changemode(), 7000);
  mode = 2;
     }

      
 
     //mode 2
     if (mode == 2){
  song.play();
     
 //collision
 
  player.collide(box);
  player.collide(box1);
  player.collide(box2);
  player.collide(box3);
  
  
  // update moving character
  if (movingRight) {
    player.position.x += speed;
  }
  if (movingLeft) {
    player.position.x -= speed;
  }
  if (movingUp) {
    player.position.y -= speed;
  }
  if (movingDown) {
    player.position.y += speed;
  }

}
  //mode 3
   if (mode == 3) {
     image(end, 0, 0, width, height);
     end.play();
     song.stop();
 drawSprites();   
 }  
 }
 
  //-------------------------------------------------------------------'
function mousePressed () {
  dmg(5);
  health.width = hp*3;
  
  if (mode == 0){
  mode = 1;
  }
  }
  

                  
  
function keyPressed() {
  if (key == 'w') {
    movingUp = true;
  }
  if (key == 'a') {
    movingLeft = true;
  }
  if (key == 's') {
    movingDown = true;
  }
  if (key == 'd') {
    movingRight = true;
  }
  
}

function keyReleased() {
  if (key == 'w') {
    movingUp = false;
  }
  if (key == 'a') {
    movingLeft = false;
  }
  if (key == 's') {
    movingDown = false;
  }
  if (key == 'd') {
    movingRight = false;
  }
  
 
 }
EN

回答 1

Stack Overflow用户

发布于 2021-01-27 20:55:09

将此setInterval(changemode(), 7000);更改为setTimeout(changemode(), 7000);

否则它将每7秒运行一次。

另外,使changemode()函数可访问,因为它当前在dmg(x)

代码语言:javascript
复制
let sans; 
let song;
let gaster;
let player;
let playerImg;
let gasterImg;
let sansImg;
let box;
let box1;
let box2;
let box3;
let mode = 0;

let health;
let hp = 100;

let bone;
let boneImg;

let blaster;
let blasterImg;
let intro;
let end;


let movingRight = false;
let movingLeft = false;
let movingUp = false;
let movingDown = false;
let gamemode = true;
let direction = 0;

let xpos = 300;
let ypos = 300;
let speed = 3;


function preload() {
  soundFormats('mp3', 'ogg');
  song = loadSound('assets/call');
  intro = loadVideo('assets/intro.mp4');
}

function setup() {
  createCanvas(600, 600);
  mode = 0;
  //end
  end = createVideo(['assets/end.mp4', 'assets/end.webm']);
  end.hide();

  //intro
  intro = createVideo(['assets/intro.mp4', 'assets/intro.webm']);
  intro.hide();


  //box 
  //top
  box = createSprite(300, 300, 400, height/60);
  box.shapeColor = color(255);
  box.setCollider('rectangle', 10, 10, 230, -100);

  //bottom
  box1 = createSprite(300, 500, 400, height/60);
  box1.shapeColor = color(255);
  box1.setCollider('rectangle', -10, -10, 230, -100);

  //box2
  box2 = createSprite(500, 400, width/60, 210);
  box2.shapeColor = color(255);
  box2.setCollider('rectangle', 0, 0, -140, 200);

  //box3
  box3= createSprite(100, 400, width/60, 210);
  box3.shapeColor = color(255);
  box3.setCollider('rectangle', 0, 0, -140, 200);



  //sans
  sans = createSprite(400, 160);
  sansImg = loadImage('assets/sansC.gif');
  sans.addImage('sans', sansImg);
  sans.scale = 0.70;

  //gaster
  gaster = createSprite(180, 140);
  gasterImg = loadImage('assets/g.gif');
  gaster.addImage('gaster', gasterImg);
  gaster.scale = 1.3;

  //player 
  player = createSprite(290, 350); 
  playerImg = loadImage('assets/kebab.png');
  player.addImage('player', playerImg);
  player.scale-=0.30;

  //bone 
  bone = createSprite(100, 400);
  boneImg = loadImage('assets/Sbone.png');
  bone.addImage('bone', boneImg);
  bone.setSpeed(3,direction);

  //healthbar
  health = createSprite(250, 530, 100, 20);
  health.shapeColor = color(255, 255, 0);
  health.width = hp*3;


  //---------------------------------------------------------------------------------------
}
//mode 0
function draw() {
  background(0);
  fill(255);
  mode = 0;
  if (mode == 0) {
    textSize(30);
    text("Press mouse button", 160, 300);

  }

  //mode 1
  if (mode == 1){
    image(intro, -400, -190, width*2.3, height*2.3);
    intro.play();
    setTimeout(changemode(), 7000);
    mode = 2;
  }

  //mode 2
  if (mode == 2) {
    song.play();

      //collision

      player.collide(box);
      player.collide(box1);
      player.collide(box2);
      player.collide(box3);


      // update moving character
      if (movingRight) {
        player.position.x += speed;
      }
      if (movingLeft) {
        player.position.x -= speed;
      }
      if (movingUp) {
        player.position.y -= speed;
      }
      if (movingDown) {
        player.position.y += speed;
      }
    }

  //mode 3
  if (mode == 3) {
    image(end, 0, 0, width, height);
    end.play();
    song.stop();
    drawSprites();   
  }  
}

//-------------------------------------------------------------------'
function mousePressed () {
  dmg(5);
  health.width = hp*3;

  if (mode == 0){
    mode = 1;
  }
}

function keyPressed() {
  if (key == 'w') {
    movingUp = true;
  }
  if (key == 'a') {
    movingLeft = true;
  }
  if (key == 's') {
    movingDown = true;
  }
  if (key == 'd') {
    movingRight = true;
  }

}

function keyReleased() {
  if (key == 'w') {
    movingUp = false;
  }
  if (key == 'a') {
    movingLeft = false;
  }
  if (key == 's') {
    movingDown = false;
  }
  if (key == 'd') {
    movingRight = false;
  }
}

//dmg 
function dmg(x) {
  hp -= x;
  if (hp <= 0) {
    mode = 3;
  }
}

function changemode() {
  if (mode == 1) {
    mode = 2;
  }
  if (mode == 2) {
    song.play();
  }
  if (mode == 3) {
    song.stop();
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65919364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档