2021年10月18日 星期一

ᐇ Week06

Week06

本周内容為讀取圖片loadImage,圖片的一些處理,imageMode;聲音播放,keyPressed和keyReleased函式,陣列,簡單聲音互動及鋼琴

1.顯示圖片

有兩種方式顯示圖片,網址或圖檔名稱

(1)網址

PImage img;//img為變數名稱

void setup(){

  size(500,500);

  img=loadImage("https://upload.wikimedia.org/wikipedia/zh/c/c8/Doraemon_volume_1_cover.jpg");

}

void draw(){

  image(img,0,0);

}

(2)把圖檔拉到程式碼

用滑鼠將圖檔拖拽至界面,只需將網址改爲圖檔名稱

   img=loadImage("dora.jpg");

2.改變圖片大小
圖片大小可以調整,以下調整爲100,100

void draw(){
  image(img,0,0,100,100);
}

3.顯示兩張圖片
可以顯示多張圖片,PImage宣告多個變數

PImage img1,img2;
void setup(){
  size(500,500);
  img1=loadImage("bg.jpg");
  img2=loadImage("dora.jpg");
}
void draw(){
  image(img1,0,0,500,500);
  image(img2,mouseX,mouseY,200,200);
}

4.去背景
(1)Ctrl+K打開資料夾data
(2)PowerPoint移除背景

5.修改滑鼠位置到正中心
有兩種方式修改滑鼠位置

(1)mouseXY調整
image(img2,mouseX-100,mouseY-100,200,200);
(2)imageMode(CORNER/CENTER)
void draw(){
  imageMode(CORNER);
  image(img1,0,0,500,500);
  imageMode(CENTER);
  image(img2,mouseX,mouseY,200,200);
}

6.聲音
Sketch--Library--Add Library--找sound--minim/sound可以下載使用

7.播放
File--examples--Minim--Basics--PlayAFile--copy
先找範例,方便改寫

import ddf.minim.*;//安裝的
Minim minim;//變數宣告
AudioPlayer player;//變數宣告
void setup()
{
  size(500, 500);
  minim = new Minim(this);//設定好
  player = minim.loadFile("groove.mp3");
  player.play();//mp3檔,copy拉過來
}
void draw(){
  
}

8.添加bgm
按下滑鼠播放bgm

import ddf.minim.*;//安裝的
Minim minim;//變數宣告
AudioPlayer player,player2;//多個變數宣告
void setup()
{
  size(500, 500);
  minim = new Minim(this);//設定好
  player = minim.loadFile("groove.mp3");
  player2 = minim.loadFile("bg.mp3");
  player2.play();//mp3檔,copy拉過來
}
void draw(){  
}
void mousePressed(){
  player.play();
}

9.播放doremifaso
按下鍵盤播放的keyPressed函式以及rewind

import ddf.minim.*;
Minim minim;
AudioPlayer doo,re,mi,fa,so;//多個變數宣告
void setup()
{
  size(500, 100);
  minim = new Minim(this);
  doo = minim.loadFile("do.wav");
  re = minim.loadFile("re.wav");
  mi = minim.loadFile("mi.wav");
  fa = minim.loadFile("fa.wav");
  so = minim.loadFile("so.wav");
}
void keyPressed(){//按下鍵盤進行播放
  if(key=='1') {doo.rewind(); doo.play();}//需要用到rewind
  if(key=='2') {re.rewind(); re.play();}
  if(key=='3') {mi.rewind(); mi.play();}
  if(key=='4') {fa.rewind(); fa.play();}
  if(key=='5') {so.rewind(); so.play();}
}
void draw(){  
}

10.鋼琴
簡單的鋼琴互動程式,用到Pressed和Released以及陣列和其判斷

import ddf.minim.*;
Minim minim;
AudioPlayer doo,re,mi,fa,so;
void setup()
{
  size(500, 100);
  minim = new Minim(this);
  doo = minim.loadFile("do.wav");
  re = minim.loadFile("re.wav");
  mi = minim.loadFile("mi.wav");
  fa = minim.loadFile("fa.wav");
  so = minim.loadFile("so.wav");
}
void keyPressed(){//按下陣列中數字變爲1
  if(key=='1') {doo.rewind(); doo.play(); down[0]=1;}
  if(key=='2') {re.rewind(); re.play(); down[1]=1;}
  if(key=='3') {mi.rewind(); mi.play(); down[2]=1;}
  if(key=='4') {fa.rewind(); fa.play(); down[3]=1;}
  if(key=='5') {so.rewind(); so.play(); down[4]=1;}
}
void keyReleased(){//如果鬆開陣列中數字還原為0
  if(key=='1') down[0]=0;
  if(key=='2') down[1]=0;
  if(key=='3') down[2]=0;
  if(key=='4') down[3]=0;
  if(key=='5') down[4]=0;
}
int [] down={0,0,0,0,0};//陣列宣告
void draw(){  
  background(255);
  for(int i=0;i<5;i++){
   if(down[i]==0) fill(255);//如果鬆開還原填充為白色
   else fill(255,0,0);
   rect(i*100,0,100,100);
  }
}


沒有留言:

張貼留言