【发布时间】:2018-05-15 14:53:28
【问题描述】:
我已经在处理中设置了一个示例,该示例通过使用语音识别库http://florianschulz.info/stt/ 运行良好
我正在尝试将字符串的内容发送到 Draw 函数,当您未在 void setup 中定义默认值时,它会导致 NullException 错误
首先,我虽然应该设置一个全局字符串 msg,但无论我如何尝试定义它,它都不会用除了单词 test 之外的任何内容更新 draw 函数。这是因为我在 void setup() 中将其定义为具有值“test”
但是如果去掉test这个词,又会导致null异常错误。
发生的情况是 String msg 默认为 value test 但是一旦你对着笔记本电脑的麦克风说话,控制台应该通过 text() 更新单词或句子;函数,然后使用更新的单词出现在处理 java 窗口中。
import websockets.*;
WebsocketServer socket;
PFont f;
String msg;
void setup() {
socket = new WebsocketServer(this, 1337, "/p5websocket");
noLoop();
size(480, 120);
f = createFont("Arial",16,true); // Arial, 16 point, anti-aliasing on
if (msg == null){
msg="test";
println(msg);
}
else{
println(msg);
}
}
void draw() {
background(100);
textFont(f,36);
fill(180);
println(msg);
text(msg, 10, 10, 70, 80);// Text wraps within text box
}
void webSocketServerEvent(String msg){
println(msg);
}
【问题讨论】:
-
在“测试”之后,您没有为
msg分配任何值,因此它无法在任何地方更改。您的意思是在活动中分配它吗? -
谢谢,我不太清楚如何分配它以便它在绘图函数中更新。它说 text(msg, 10, 10, 70, 80) 的地方是我希望来自 void webSocketServerEvent 的值更新处理 java 窗口中显示的文本。目前它只是在该窗口中显示测试,但没有使用来自 websocket 的新信息进行更新。
-
msg 的值正在更新 void webSocketServerEvent(String msg){ println(msg);因为当你对着麦克风说话时,它会在控制台窗口中打印出正在处理的结果,但它没有被 void draw(){ } 捕获
-
不,那只是接收它并打印它。它没有存储在任何地方。您可能希望在该方法中添加
this.msg = msg;以实际存储它。 -
我尝试将其添加到 void setup()、void draw() 和 void webSocketServer() 中,但它们都没有任何区别。如果您有一个静态设置的 msg 变量,如控制台中出现的 test 和一个来自 void websocketServer 的动态变化变量(也是 msg),我无法理解为什么一个人不将另一个更新为相同的字符串名称两个都。 void websocketServer 是否应该在 text(msg, 10, 10, 70, 80) 之前先在 draw 函数中调用;使用 webSocketServer(msg);也许?
标签: websocket nullpointerexception processing