完全に機能するグローバルモードのスケッチがあります。3D/WEBGLスケッチの横に並んでいるので、インスタンスモードの別のドキュメントに取り込みます。p5.jsインスタンスモード:未定義のプロパティ '0'を読み取ることができません
Pulse()の新しいインスタンスをプッシュするたびに、draw()のfor()ループから返された "undefinedのプロパティ '0'を読み取れません。私はそれがグローバルモードでは完全に動作すると言っていたので、ここでは構文を間違えていなければなりませんが、p5インスタンスモードでオブジェクトを使用する例は見つかりません。なぜアレイから読み込めないのか、それがなぜプッシュできないのか分かりません。
p5.jsインスタンスモードでオブジェクト配列にプッシュするときの構文は非常にわかりませんでした。私はs.pulses.push(新しいs.Pulse())とs.pulses.s.push(新しいs.Pulse())のバリエーションを試しましたが、これらのプッシュエラーが返されました。以下のコードはプッシュしているようですが、配列は読み取れません。
ご協力いただきありがとうございます。ありがとうございます。
var twoDee = function(s) {
var cnv;
var cnvWidth, cnvHeight;
var pulsesAmount;
var pulses = [];
s.setup = function() {
s.cnvWidth = s.windowWidth;
s.cnvHeight = document.getElementById('sketch-wrap-bleed-bottom').offsetHeight;
s.cnv = s.createCanvas(s.cnvWidth, s.cnvHeight, s.P2D);
s.cnv.parent("sketch-wrap-bleed-bottom");
s.pulsesAmount = 0;
}
s.draw = function() {
s.background(40);
for (var i = 0; i < s.pulsesAmount; i++) {
s.pulses[i].move(); // problem here
s.pulses[i].display();
}
s.noFill();
s.stroke(255);
s.ellipse(s.mouseX, s.mouseY, 30, 30);
}
s.Pulse = function() {
this.size = 20;
this.grow = 0.5;
this.xPos = s.width/2 + 200;
this.yPos = s.height/2;
this.opacity = 255;
this.move = function() {
this.size += this.grow;
this.opacity = map(this.size, 0, 60, 255, 0);
}
this.display = function() {
s.noFill();
s.strokeWeight(2);
s.stroke(242, 202, 102, this.opacity);
s.translate(this.xPos, this.yPos);
s.ellipse(0, 0, this.size, this.size);
s.translate(-this.xPos, -this.yPos);
}
}
s.mousePressed = function() {
s.pulsesAmount += 1;
s.pulses = s.push(new s.Pulse());
}
}
コードのjsfiddleまたはcodepenにリンクできますか? 'sketch-wrap-bleed-bottom '要素を見つけることができないのでエラーが発生するので、コードを実行することはできません。 –
ありがとうKevin。私はcodepenバージョンを作ったが、コンソールはエラーコードを表示していない。とにかくここにいるhttp://codepen.io/tomricci/pen/wzNPAK?editors=0001マウスの楕円を追加して、プッシュしようとするとすぐにスケッチが途切れることを示すためにクリックするとすぐに切り捨てますオブジェクト – themessup
Safariは "TypeError:未定義はオブジェクトではありません(評価 'i')"というエラーを表示します – themessup