无法弄清楚为什么变量在p5.js中未定义

时间:2016-04-03 23:06:18

标签: javascript variables processing p5.js

我确定这是有史以来最简单的问题,但我的朋友和我在p5.js中配对编码并且无法弄清楚为什么下面的代码会抛出错误:Uncaught ReferenceError:RiLexicon未定义

我们已经完成了一个类似的项目,所有代码基本上都在完全相同的位置,并且它可以工作。也许我们一直盯着这个太久而且疯了?请帮忙!谢谢!

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."
        }  
    }
 }

1 个答案:

答案 0 :(得分:1)

Like the comments said, you need to make sure you're loading the RiTa library.

It sounds like maybe your previous sketch already loaded the library, and then you copied some code from that sketch into a new one. The problem is, that's not enough to make your new sketch work. You have to load the library into your new sketch so that you can access it.

Here is a really great tutorial on how to load a library, but I'll try to copy the basics here:

Step 1: Download RiTa from here.

Step 2: Find a file named rita-full.min.js (you could also download it directly from here).

Step 3: Copy that file into your sketch directory. It should be accessible by your html file.

Step 4: Edit your html file to load the library by putting this line in the <head> section:

<script src="your/path/to/rita-full.min.js" type="text/javascript"></script>

Step 5: Now when you load your html page, the library will be loaded, and your code will be able to access it.

You can find more information on RiTaJS's GitHub page here, or in this RiTaJS tutorial.