无法弄清楚为什么变量在 p5.js 中未定义
Cannot Figure out Why Variable is Undefined in p5.js
我确定这是有史以来最简单的问题,但是我和我的朋友在 p5.js 中结对编码,无法弄清楚为什么下面的代码会抛出错误:Uncaught ReferenceError: RiLexicon is not defined
我们已经完成了一个类似的项目,所有代码基本上都在完全相同的地方,并且它有效。也许我们盯着这个看得太久了,快要发疯了?请帮忙!谢谢!
var mermaid = ("Fishes, both large and small, glide between the branches, as birds fly among the trees here upon land. In the deepest spot of all, stands the castle of the Sea King. Its walls are built of coral, and the long, gothic windows are of the clearest amber. The roof is formed of shells, that open and close as the water flows over them. Their appearance is very beautiful, for in each lies a glittering pearl, which would be fit for the diadem of a queen.");
var story = [];
var lexicon;
function setup() {
createCanvas(650,400);
lexicon = new RiLexicon();
story = RiTa.tokenize(mermaid);
//partsOfSpeech = RiTa.getPosTags(story);
textSize(15);
fill(255, 100, 100);
function draw(){
// background(255);
var wordPosX = 10;
var wordPosY = width/8;
for(var i=0; i < story.length; i++){
text(story[i], wordPosX, wordPosY)
textWidth(story[i]+5,30);
//we check whether each parts of speech exists
//in our array
//if(partsOfSpeech[i] != null){
// text(partsOfSpeech[i], wordPosX, wordPosY+20, textWidth(story[i]), 20);
// fill(100,175,175);
wordPosX += textWidth(story[i])+ 3;
//if wordPosX goes beyond our width,
//move the text down to a new line
if(wordPosX +30 > width){
wordPosX = 10;
wordPosY += 50;
}
}
}
function mousePressed(){
changingWords();
textSize(15);
function changingWords (){
var story = "Fishes," +
lexicon.randomWord("nn") + "" +
lexicon.randomWord("jj") +
"and" + lexicon.randomWord("jj") +
", glide between the branches, as birds fly among the trees here upon" +
lexicon.randomWord("nn") +
". In the deepest" + lexicon.randomWord("nn") +
"of all, stands the" + lexicon.randomWord("nn") +
"of the Sea King. Its walls are built of" +
lexicon.randomWord("jj") +
", and the" + lexicon.randomWord("jj") +
"," + lexicon.randomWord("jj") +
"windows are of the clearest" +
lexicon.randomWord("jj") +
". The" + lexicon.randomWord("nn") +
"is formed of shells, that" +
lexicon.randomWord("jj") +
"and close as the" +
lexicon.randomWord("nn") +
"flows over them. Their" +
lexicon.randomWord("nn") +
"is very" + lexicon.randomWord("jj") +
", for in each lies a glittering" +
lexicon.randomWord("nn") +
", which would be fit for the" +
lexicon.randomWord("nn") +
"of a queen."
}
}
}
如评论所述,您需要确保加载 RiTa 库。
听起来你之前的草图可能已经加载了库,然后你从那个草图复制了一些代码到一个新的草图中。问题是,这还不足以使您的新草图发挥作用。您必须将库加载到新草图中才能访问它。
Here 是关于如何加载库的非常棒的教程,但我将尝试在此处复制基础知识:
第 1 步: 从 here 下载 RiTa。
第 2 步: 找到名为 rita-full.min.js
的文件(您也可以直接从 here 下载)。
第 3 步:将该文件复制到您的 sketch 目录中。您的 html 文件应该可以访问它。
第 4 步: 编辑您的 html 文件以通过将此行放入 <head>
部分来加载库:
<script src="your/path/to/rita-full.min.js" type="text/javascript"></script>
第 5 步: 现在,当您加载 html 页面时,将加载库,您的代码将能够访问它。
您可以在 RiTaJS 的 GitHub 页面 here, or in this RiTaJS tutorial 上找到更多信息。
我确定这是有史以来最简单的问题,但是我和我的朋友在 p5.js 中结对编码,无法弄清楚为什么下面的代码会抛出错误:Uncaught ReferenceError: RiLexicon is not defined
我们已经完成了一个类似的项目,所有代码基本上都在完全相同的地方,并且它有效。也许我们盯着这个看得太久了,快要发疯了?请帮忙!谢谢!
var mermaid = ("Fishes, both large and small, glide between the branches, as birds fly among the trees here upon land. In the deepest spot of all, stands the castle of the Sea King. Its walls are built of coral, and the long, gothic windows are of the clearest amber. The roof is formed of shells, that open and close as the water flows over them. Their appearance is very beautiful, for in each lies a glittering pearl, which would be fit for the diadem of a queen.");
var story = [];
var lexicon;
function setup() {
createCanvas(650,400);
lexicon = new RiLexicon();
story = RiTa.tokenize(mermaid);
//partsOfSpeech = RiTa.getPosTags(story);
textSize(15);
fill(255, 100, 100);
function draw(){
// background(255);
var wordPosX = 10;
var wordPosY = width/8;
for(var i=0; i < story.length; i++){
text(story[i], wordPosX, wordPosY)
textWidth(story[i]+5,30);
//we check whether each parts of speech exists
//in our array
//if(partsOfSpeech[i] != null){
// text(partsOfSpeech[i], wordPosX, wordPosY+20, textWidth(story[i]), 20);
// fill(100,175,175);
wordPosX += textWidth(story[i])+ 3;
//if wordPosX goes beyond our width,
//move the text down to a new line
if(wordPosX +30 > width){
wordPosX = 10;
wordPosY += 50;
}
}
}
function mousePressed(){
changingWords();
textSize(15);
function changingWords (){
var story = "Fishes," +
lexicon.randomWord("nn") + "" +
lexicon.randomWord("jj") +
"and" + lexicon.randomWord("jj") +
", glide between the branches, as birds fly among the trees here upon" +
lexicon.randomWord("nn") +
". In the deepest" + lexicon.randomWord("nn") +
"of all, stands the" + lexicon.randomWord("nn") +
"of the Sea King. Its walls are built of" +
lexicon.randomWord("jj") +
", and the" + lexicon.randomWord("jj") +
"," + lexicon.randomWord("jj") +
"windows are of the clearest" +
lexicon.randomWord("jj") +
". The" + lexicon.randomWord("nn") +
"is formed of shells, that" +
lexicon.randomWord("jj") +
"and close as the" +
lexicon.randomWord("nn") +
"flows over them. Their" +
lexicon.randomWord("nn") +
"is very" + lexicon.randomWord("jj") +
", for in each lies a glittering" +
lexicon.randomWord("nn") +
", which would be fit for the" +
lexicon.randomWord("nn") +
"of a queen."
}
}
}
如评论所述,您需要确保加载 RiTa 库。
听起来你之前的草图可能已经加载了库,然后你从那个草图复制了一些代码到一个新的草图中。问题是,这还不足以使您的新草图发挥作用。您必须将库加载到新草图中才能访问它。
Here 是关于如何加载库的非常棒的教程,但我将尝试在此处复制基础知识:
第 1 步: 从 here 下载 RiTa。
第 2 步: 找到名为 rita-full.min.js
的文件(您也可以直接从 here 下载)。
第 3 步:将该文件复制到您的 sketch 目录中。您的 html 文件应该可以访问它。
第 4 步: 编辑您的 html 文件以通过将此行放入 <head>
部分来加载库:
<script src="your/path/to/rita-full.min.js" type="text/javascript"></script>
第 5 步: 现在,当您加载 html 页面时,将加载库,您的代码将能够访问它。
您可以在 RiTaJS 的 GitHub 页面 here, or in this RiTaJS tutorial 上找到更多信息。