java - 在不同函数中调用时变量无法正常工作
问题描述
我正在使用 java 制作一个可爱的动画猪的代码:
import java.io.File;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public static void main(String[] args) {
File Oink = new File("C:/.../oink.wav");
//sound definition -- you can specify your file location in '...'
//if you would like to test my code :)
}
static void PlaySound(File Sound) {
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(Sound));
clip.start();
Thread.sleep(clip.getMicrosecondLength()/1000);
}catch (Exception e) {
System.out.println(e);
}
}
int pigX ;
int pigY ;
int count ;
int snoutPos ;
int eyeCol ;
int legY ;
int earS ;
void setup () {
;
System.out.println("Pig assemled!");
System.out.println("Pig free to roam!");
System.out.println(Math.random());
size (900, 900);
pigX = width/2;
pigY = height/2;
count = -1;
count = -1;
}
void draw () {
if (keyPressed) {
if (key == CODED) {
if (keyCode==RIGHT) {
pigX += 10;
}
if (keyCode==LEFT) {
pigX -= 10;
}
if (keyCode==UP) {
pigY -= 10;
}
if (keyCode==DOWN) {
pigY += 10;
}
if (key==' ') {
PlaySound(Oink); // Oink is apparently not defined here
}
}
}
if (pigX < -180) {
pigX = 1080;
}
if (pigX > 1080) {
pigX = -180;
}
if (pigY < -180) {
pigY = 1080;
}
if (pigY > 1080) {
pigY = -170;
}
background (50, 130, 50);
count += 1;
if ((count % 36) == 0) {
snoutPos += 1;
}
if (0 < (count % 90) && (count % 90) < 10) {
eyeCol = 0;
} else {
eyeCol = 255;
}
if (0 < (count % 40) && (count % 40) < 20) {
legY = 20;
} else {
legY = 0;
}
if (count % 60 < 30) {
earS = 10;
} else {
earS = 7;
}
//shadow
fill (45, 95, 45);
stroke (45, 95, 45);
rect (pigX, pigY+160, 200, 100);
rect (pigX+109, pigY+160, 20, 80);
rect (pigX-109, pigY+160, 20, 80);
//body
fill (239, 154, 154);
stroke (0, 0, 0);
rectMode (CENTER);
rect (pigX, pigY, 180, 180);
//eyes
fill (0, 0, 0);
rect (pigX-70, pigY, 40, 20);
rect (pigX+70, pigY, 40, 20);
stroke (eyeCol, eyeCol, eyeCol);
fill (eyeCol, eyeCol, eyeCol);
rect (pigX-60, pigY, 20, 20);
rect (pigX+60, pigY, 20, 20);
//snout
fill (255, 205, 210);
stroke (255, 205, 210);
rect (pigX, pigY+40-(snoutPos % 2)*9, 80, 50);
fill (229, 115, 115);
stroke (229, 115, 115);
rect (pigX-30, pigY+40-(snoutPos % 2)*9, 20, 20);
rect (pigX+30, pigY+40-(snoutPos % 2)*9, 20, 20);
//hair i guess
rect (pigX-40, pigY-69, 20, 40);
//legs
fill (190, 100, 100);
stroke (100, 65, 65);
rect (pigX-45, pigY+120+legY/2, 60, 60+legY);
fill (190, 100, 100);
stroke (100, 65, 65);
rect (pigX+45, pigY+130-legY/2, 60, 80-legY);
//hooves
fill (140, 50, 50);
stroke (140, 50, 50);
rect (pigX-65, pigY+140+legY, 20, 20);
rect (pigX-25, pigY+140+legY, 20, 20);
rect (pigX+65, pigY+160-legY, 20, 20);
rect (pigX+25, pigY+160-legY, 20, 20);
//ears
fill (219, 134, 134);
stroke (219, 134, 134);
rect (pigX-85, pigY-95, 50, 15);
rect (pigX-100, pigY-70, 20, 40);
rect (pigX+85, pigY-95, 50, 15);
rect (pigX+100, pigY-70, 20, 40);
}
但是,程序说没有定义“Oink”!
我想也许我应该做一些像Oink
全球化这样的事情,但我不能只坚持global File
main() !
我在互联网上浏览了解决方案,但没有一个结果真正回答了我的问题!
我想我可以在draw ()
.那。
我该如何解决这个问题?
注意:即使我放入File Oink = new File("C:/.../oink.wav");
,draw()
声音仍然不起作用!
解决方案
推荐阅读
- python - valueError:在处理 json 文件时对关闭的文件进行 I/O 操作
- python - 如何在密码字段中放置条件?
- node.js - NestJs 不读取环境变量
- geofencing - 如果不使用地图,我是否需要 Google API 密钥才能使用地理围栏(fusedLocation)?
- mysql - laravel 中为 foreach() 问题提供的参数无效
- python - 在 github PR 中显示覆盖率
- algorithm - 背负式/箱式包装 有问题?
- javascript - 从嵌套对象和数组中过滤掉对象
- flutter - 如何通过 API Gateway 将 json 数据传递给 aws lambda?
- vue.js - 在 v-text-field 上永久显示颜色