- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注 Coding Train 编码挑战,挑战 #6:有丝 split 。我被困在应该检测其中一个单元格上的点击的部分。如果你把它放到你的网络浏览器中,你就会明白我的意思——它说 cells[i].clicked is not a function
不久之后它说cells[i].moved is not a function
即使它之前工作得很好。有人能修吗???我正在使用 atom 代码编辑器和 p5.js 库。如果你不知道 p5.js,你可能仍然知道什么是错的......不过我已经在下面的代码中引用了它。
./index.html 使用这个确切的代码,它引用了 P5.JS
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- This next part referneces p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js"></script>
<title>Mitosis Simulation</title>
</head>
<body>
<script src="script.js" ></script>
<script src="cell.js" ></script>
</body>
</html>
./script.js
var cells = [];
function setup() {
createCanvas(600, 600);
//make two cells
cells.push(new Cell());
cells.push(new Cell());
}
function draw() {
background(51);
//make the cells move and show
for(var i = 0; i < cells.length; i ++) {
cells[i].move();
cells[i].show();
}
}
function mousePressed() {
//this SHOULD detect a click but it doesn't
for(var i = 0; i < cells.length; i ++) {
if(cells[i].clicked(mouseX, mouseY)) {
cells.push(cells[i].mitosis);
}
}
}
./cell.js
单元格的代码,我猜你可以称之为面向对象编程
function Cell(pos, r) {
//gives the cell either the argument pos, or a random place on the canvas
this.pos = pos || createVector(random(width), random(height));
//gives it either the argument r or the radius of 80
this.r = r || 80;
//gives a random rgb color
this.c = color(0, random(150, 255), random(150, 255));
//move the cell
this.move = function() {
//define the direction that it moves
var vel = p5.Vector.random2D();
//move in that direction
this.pos.add(vel);
}
//show the cell
this.show = function() {
fill(this.c);
noStroke();
//display a cell at this.pos.x, this.pos.y with a radius of this.r
ellipse(this.pos.x, this.pos.y, this.r, this.r);
}
//return true when clicked
this.clicked = function(x, y) {
//find distance between mouseX, mouseY and its position
var d = dist(this.pos.x, this.pos.y, x, y);
//if distance is in the circle, return true
if(d < this.r / 2) {
return true;
} else {
return false;
}
}
//split in two
this.mitosis = function() {
//make a new cell exactly like its predeccesor and return it
var cellss = new Cell(this.pos, this.r/2, this.c);
return cellss;
}
}
我敢肯定这是一个愚蠢的错误或其他什么,但一定要告诉我!
最佳答案
错误在您的 mousePressed()
中:您不是将有丝 split 称为函数,您只是在说 cells[i].mitosis
.当你这样做时,它不会运行有丝 split 函数,它实际上只是返回对该函数的引用。
function mousePressed() {
// detects clicks, and if there is a click, it runs the mitosis function
for(var i = 0; i < cellLength; i ++) {
if(cells[i].clicked(mouseX, mouseY)) {
cells.push(cells[i].mitosis());
}
}
}
其他一些注意事项:
<script src="cell.js" ></script>
<script src="script.js" ></script>
关于javascript - 我如何让 clicked() 函数起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64289209/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!