Javascript 如何使我创建的clicked()函数正常工作?

Javascript 如何使我创建的clicked()函数正常工作?,javascript,oop,onclick,p5.js,Javascript,Oop,Onclick,P5.js,我正在跟随一个编码序列编码挑战,挑战6:有丝分裂。我被卡在了应该检测到其中一个单元格点击的部分。如果你把它放到你的网络浏览器中,你就会明白我的意思了——它说,cells[I]。单击不是一个函数,,很快它就会说,cells[I]。移动不是一个函数,尽管它之前工作得很好。有人能修好吗???我正在使用atom代码编辑器和p5.js库。如果您不知道p5.js,您可能仍然知道哪里出了问题。。。我已经在下面的代码中引用了它 ./index.html使用这个精确的代码,它引用了P5.JS 有丝分裂模拟 /

我正在跟随一个编码序列编码挑战,挑战6:有丝分裂。我被卡在了应该检测到其中一个单元格点击的部分。如果你把它放到你的网络浏览器中,你就会明白我的意思了——它说,
cells[I]。单击不是一个函数,
,很快它就会说,
cells[I]。移动不是一个函数,尽管它之前工作得很好。有人能修好吗???我正在使用atom代码编辑器和p5.js库。如果您不知道p5.js,您可能仍然知道哪里出了问题。。。我已经在下面的代码中引用了它

./index.html使用这个精确的代码,它引用了P5.JS


有丝分裂模拟
/script.js

var单元格=[];
函数设置(){
createCanvas(600600);
//做两个细胞
单元格。推(新单元格());
单元格。推(新单元格());
}
函数绘图(){
背景(51);
//使细胞移动并显示
对于(变量i=0;i
./cell.js单元格的代码,我想你可以称之为面向对象编程

功能单元(位置,r){
//为单元格提供参数pos或画布上的随机位置
this.pos=pos | | createVector(随机(宽度)、随机(高度));
//给出参数r或半径80
这个.r=r | | 80;
//提供随机rgb颜色
c=color(0,random(150255),random(150255));
//移动单元格
this.move=函数(){
//定义它移动的方向
var-vel=p5.Vector.random2D();
//朝那个方向走
此位置添加(vel);
}
//出示手机
this.show=函数(){
填充(本节第c节);
仰泳();
//在此.pos.x,此.pos.y处显示一个单元格,半径为.r
椭圆(这个.pos.x,这个.pos.y,这个.r,这个.r);
}
//单击时返回true
this.clicked=函数(x,y){
//查找mouseX、mouseY与其位置之间的距离
var d=距离(这个位置x,这个位置y,x,y);
//如果距离在圆中,则返回true
如果(d

我肯定这是一个愚蠢的错误,但一定要告诉我

错误在您的
鼠标按下()
:您不是将有丝分裂作为一个函数调用,您只是说
细胞[i]。有丝分裂
。当你这样做时,它不会运行有丝分裂函数,它实际上只是返回一个函数的引用

function mousePressed(){
//检测咔哒声,如果有咔哒声,则运行有丝分裂功能
对于(变量i=0;i
还有一些需要注意的事项:

  • 创建一个半径为1/2的新单元实际上并没有使某个单元的大小减少一半,而是使某个单元的面积小于一半,因为二维事物的工作方式。假设你有一个正方形,每边的长度减少1/2倍:它将有1/4的面积。实际的面积减半需要对对角线的长度进行一些复杂的计算。所以你必须对pi做一个类似的事情,希夫曼在他的agar.io教程中也提到了这一点
  • 最好的做法是在主JavaScript代码之前引用所有类(或者在本例中是闭包),如HTML中所示:
  •