1 回答

TA貢獻1825條經驗 獲得超6個贊
這是因為范圍的問題。在回調函數doodleArea內部,范圍不是組件范圍 ( this)。這里這是未定義的,我們無法訪問未定義的isRectangleMode??赡艿慕鉀Q方案是:
在 .ts 中修改createCanvas()下面給出的代碼:
private createCanvas() {
const doodleArea = s => {
s.setup = () => {
let canvas = s.createCanvas(s.windowWidth - 440, s.windowHeight - 200);
canvas.parent("doodle-area");
s.draw = () => {
if (this.isRectangleMode) {
console.log("Rectangle");
}
s.stroke(0);
if (s.mouseIsPressed === true) {
s.line(s.mouseX, s.mouseY, s.pmouseX, s.pmouseY);
}
};
s.keyPressed = () => {
if (s.key === 'c') {
window.location.reload();
}};};
};
this.p5Init = new p5(doodleArea);
}
以下是相同的示例代碼:
https://stackblitz.com/edit/angular-s-p5-angular?file=src%2Fapp%2Fapp.component.ts
https://angular-s-p5-angular.stackblitz.io
希望這會有所幫助。
添加回答
舉報