2016-05-13 2 views
0

Anfänger Frage hier und ich würde den ganzen Code hier posten, aber ich glaube, dass die Syntax anders ist, da ich CodeHS verwende, um Javascript zu lernen.Wie ändere ich die Position von Kreisen in einer for-Schleife?

Wenn ich Kreise mit einem solchen for-Schleife als

gemacht
for (var i = 0; i < NUM_CIRCLES; i++) { 

    var circle = new Circle(RADIUS); 
    var x = Randomizer.nextInt(RADIUS, getWidth() - RADIUS); 
    var y = Randomizer.nextInt(RADIUS, getHeight() - RADIUS); 
    circle.setPosition(x, y); 
    circle.setColor(Randomizer.nextColor()); 
    add(circle); 

} 

Wenn ich die Positionen eines der Kreise später ändern wollte, wie ich das tun würde? Die Kreise werden alle mit dem var-Kreis gemacht. Wenn also circle.setPosition(x,y) verwendet wird, wie kann ich sagen, welcher Kreis geändert werden soll? Oder müsste ich für jeden Kreis eine Variable erstellen, damit ihre Positionen geändert werden können.

Antwort

1

eine Strichliste des Kreises Objekte zu halten, können Sie sie in der Anordnung von Position zuzugreifen oder eine Kennung können Sie auf das Objekt

var circleAggregator = []; 
for (var i = 0; i < NUM_CIRCLES; i++) { 
    var circle = new Circle(RADIUS); 
    circleAggregator.push(circle); // index used as identifier 
    // you can add another identifier by updating constructor 
    var x = Randomizer.nextInt(RADIUS, getWidth() - RADIUS); 
    var y = Randomizer.nextInt(RADIUS, getHeight() - RADIUS); 
    circle.setPosition(x, y); 
    circle.setColor(Randomizer.nextColor()); 
    add(circle); 
} 

... später hinzufügen, wenn Sie Ihr Objekt zugreifen möchten, finden es durch seine Kennung, die in diesem Fall wird der Index ist

var selectedCircle = circleAggregator[idx]; 

oder mit einem Update-Methode

updateCirclePosition(circleAggregator[idx]); 
Verwandte Themen