java - 处理函数什么都不做,只是冻结程序
问题描述
我正在研究处理中的寻路算法。如果我不画一条穿过绿点和红点之间路径的线,它可以工作,但如果我这样做,我有一个问题,如果我调用一个函数,程序除了冻结之外什么都不做,我不知道为什么。像素存储您绘制的内容,并且有各种各样的东西,在这个问题上无关紧要。当您将其粘贴到处理中时,按 ctrl+t 自动格式化它,以便您更好地理解它,但我敢打赌这是一个新手问题。
int[][] pixelss = new int[500][500];
void setup() {
background(255);
size(500, 500);}
int[][] badcoos = new int[500][500];
void golinego() {
stroke(200, 200, 255);
line(30, 30, 470, 470);
int j = 30;
int i = 30;
while (dist(i, j, 470, 470) > 10) {
stroke(0, 0, 180);
circle(i, j, 1);
if (pixelss[i+1][j+1]==0) {
i++;j++;}
if (pixelss[i][j]==1) {
if (pixelss[i][j+1]==1) {
if (pixelss[i+1][j]==0) {
i++;}
} else if (pixelss[i+1][j]==1) {
if (pixelss[i][j+1]==0) {
j++;}
} else {
i-=1;
j-=1;}}}}
void draw() {
stroke(0, 255, 0);
fill(0, 255, 0);
circle(30, 30, 10);
stroke(255, 0, 0);
fill(255, 0, 0);
circle(470, 470, 10);
if (mousePressed == true) {
try {
stroke(0);
fill(0);
circle(mouseX, mouseY, 2);
pixelss[mouseX][mouseY] = 1;
pixelss[mouseX+1][mouseY] = 1;
pixelss[mouseX-1][mouseY] = 1;
pixelss[mouseX][mouseY+1] = 1;
pixelss[mouseX][mouseY-1] = 1;
pixelss[mouseX+1][mouseY+1] = 1;
pixelss[mouseX-1][mouseY+1] = 1;
pixelss[mouseX+1][mouseY-1] = 1;
pixelss[mouseX-1][mouseY-1] = 1;
}catch(ArrayIndexOutOfBoundsException e) {}}}
void keyPressed() {
if (key=='r') {
pixelss = new int[500][500];
badcoos = new int[500][500];
background(255);}
if (key==' ') {
golinego();}
if (key=='d') {
background(0);
for (int i = 0; i < 500; i++) {
for (int j = 0; j < 500; j++) {
if (pixelss[i][j]==1) {
stroke(255);
circle(i, j, 1);}}}}}
解决方案
当 ArrayIndexOutOfBoundsException 被捕获时,您至少应该打印一些东西。
看起来您正在使用某种 gui 库,请确保您在与 gui 不同的线程中进行任何处理,否则 gui 将变得无响应并像您描述的那样“冻结”。
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
推荐阅读
- python - 根据具有特定字符的列条目拆分 pandas 中的行 - Pandas
- docker - 有没有办法使用带有 docker 的 TTY 重新附加到仍然打开的会话?
- dialogflow-es-fulfillment - 在 Dialogflow 中为 TELEGRAM 添加自定义 JSON 负载,让用户分享他们的电话号码
- c - 如何在终端中使用 fprintf (Mac OS)
- amazon-web-services - 模板获取 AWS::EC2::EIP(弹性 IP)的 AllocationID 时出现 AWS CloudFormation 错误
- r - 在数据集中的每一列中保留前三个字符
- python-3.x - Pygame/Python/Terminal/Mac相关
- cuda - /usr/local 下的两个 CUDA 文件夹。我应该导出哪个?
- c# - 两个 ObservableCollections 的联合返回重复项
- python - 我无法在 Visual Studio Code 上格式化 Python 文件:“没有安装 'python' 文件的文档格式化程序。”