我一直在研究这个帖子
Processing 2.0 - Open file dialog 关于selectinput()的使用。 我希望导入点数据来构建一些3d图。 我可以导入数据并构建绘图确定但是在尝试使用时 selectinput()选择我遇到麻烦的文件。 我遇到的困难是selectinput()似乎与P3D不兼容 窗口。
使用OS X10.10
例如此代码可以使用
void setup() {
size(400, 400,P3D); //3Dgraphics specified
background(0);
stroke(255);
frameRate(20);
}
void draw() {
noFill();
ellipse(mouseX, mouseY, 90, 90);
这是有效的
String [] myInputFileContents ;
String myFilePath;
void setup() {
selectInput("Select a file : ", "fileSelected");
while (myInputFileContents == null) {//wait
// println("wait"); //If there is nothing inside the curly brackets
//delay(3000); //this doesn't work
size(400, 400 );/// If P3D is added it won't work
background(0);
//smooth();
stroke(255);
frameRate(25);
}
}
void draw() {
box(mouseX, mouseY, 150);
println("Selected at this point " + myFilePath);
}
void mousePressed() {
selectInput("Select a file : ", "fileSelected");
}
void fileSelected(File selection) {
if (selection == null) {
println("no selection so far...");
}
else {
myFilePath = selection.getAbsolutePath();
myInputFileContents = loadStrings(myFilePath) ;// this moves here...
println("User selected " + myFilePath);
}
}
但是如果
size(400, 400);
更改为
size(400,400,P3D);
框架显示但不会画画。
有人能指出我的答案吗?
答案 0 :(得分:0)
似乎这个问题是某种帧加载问题。在OS X 10.10 Yoesemite下,这个“hackish”接近我。它也应该在Windows下工作。哦,无论何时使用selectInput(),请使用mouseReleased,以便只调用一次函数:)
男人这是一个非常挑战的人,但是要求+1。
PS:如果您在第一次打开应用程序时按下取消,我添加了一个exit(),这应该更方便。
String [] myInputFileContents ;
String myFilePath;
boolean didPreSelect = false;
boolean secondPress = false;
void setup() {
if (didPreSelect == false)
{
didPreSelect = true;
selectInput("Select a file : ", "fileSelected");
}
//frame = null;
while (myInputFileContents == null || myInputFileContents.length < 2) {//wait
delay(1000);
}
//this doesn't work
size(400, 400, P3D);
background(0);
//smooth();
stroke(255);
frameRate(25);
}
void draw() {
box(mouseX, mouseY, 150);
//println("Selected at this point " + myFilePath);
}
void mouseReleased() {
if(secondPress == false) secondPress = true;
selectInput("Select a file : ", "fileSelected");
}
void fileSelected(File selection) {
if (frameCount < 50)
{
if (selection == null) {
println("no selection so far...");
if(secondPress == false) exit();
} else {
myFilePath = selection.getAbsolutePath();
myInputFileContents = loadStrings(myFilePath) ;// this moves here..
println("User selected " + myFilePath);
}
}
}