2016-10-05 4 views
1

オブジェクトの配列を使用してこのp5.jsコードを作成しています。マウスを押すたびにParticle()コンストラクタ関数配列pts []に格納します。しかし、マウスを押すと、コードは何とかforループに入りません。私は配列の長さを初期化しようとしましたが、プログラムが止まってしまい、強制終了しなければなりません...誰もこの状況を助けることができますか?どうもありがとう!オブジェクトの空の配列を宣言するときにコンストラクタを使用して新しいオブジェクトを作成できません

var pts = []; 
var onPressed; 
//pts.length=2; 

function setup() { 
    createCanvas(720, 720); 
    smooth(); 
    frameRate(30); 
    colorMode(HSB); 
    rectMode(CENTER); 
    background(255); 
} 

function draw() { 
    //draw new particle when pressed 
    if (onPressed) { 
    println("checked press"); 
    for (var i=0;i<=pts.length;i++) { 
     println("entered for loop"); 
     var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length); 
     //println("newP"); 
     pts.push(newP); 
    } 
    } 
} 

function mousePressed() { 
    onPressed = true; 
    println("presses"); 
} 

function mouseReleased() { 
    onPressed = false; 
} 

function Particle(x, y, xOffset, yOffset){ 
    println("called Particle"); 
    this.x=x; 
    this.y=y; 
    this.xOffset=xOffset; 
    this.yOffset=yOffset; 
} 
+1

'draw()'のコードは、すでにリストに入っている各パーティクルに新しいパーティクルを追加するように見えます。粒子が0個の場合、ゼロが追加されます。 – Pointy

答えて

1

forループは意味がありません。あなたのpts変数は空になります。いつ入力しますか?

for (var i=0;i<=pts.length;i++) { 

実際、なぜあなたはまったくループしていますか?あなただけの新しいParticleを追加したいようだ:

また
var newP = new Particle(mouseX, mouseY, i+pts.length, i+pts.length); 
    pts.push(newP); 

、あなただけの既存のmouseIsPressed変数を使用することができるときなぜあなたはあなた自身のonPressed変数を作成していますか?

関連する問題