websocket - 处理草图中带有 Websocket 的 NullPointerException
问题描述
我在处理中设置了一个示例,该示例通过使用语音识别库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
变量分配给msg
传递给webSocketServerEvent()
函数的参数值?
请注意,仅仅因为它们具有相同的名称并不意味着它们是相同的变量。它们是两个不同范围内的两个不同变量。如果要引用或重新分配草图级变量,可以使用this
关键字来消除歧义:
void webSocketServerEvent(String msg){
this.msg = msg;
println(msg);
}
或者您可以只重命名变量之一:
void webSocketServerEvent(String webSocketMessage){
this.msg = webSocketMessage;
println(msg);
}