2016-04-17 5 views
0

Ich versuche, eine Möglichkeit zu finden, mit CreateJS Formen zu erstellen, wo andere nicht existieren. Ich bin mir nicht sicher, wo ich anfangen oder was ich in diesem Fall überhaupt suchen soll. Grundsätzlich ist mein Ziel, dass Kreise auf der Bühne erscheinen, aber nur wo andere nicht sind.Erstellen von Formen, in denen keine anderen existieren

Meine Frage ist, was ist ein guter Weg, um dies zu nähern? Gibt es Unterlagen oder ähnliches, die mir helfen könnten, den Code dafür zu erstellen?

Link to JSFiddle

var stage = new createjs.Stage("canvas"), 
    canvas = stage.canvas; 

function createCircle(){ 
    var circle = new createjs.Shape().set({name:"circle"});  
    circle.graphics 
     .beginFill("DeepSkyBlue") 
     .drawCircle(0, 0, 25); 
    circle.x = Math.random() * canvas.width; 
     circle.y = Math.random() * canvas.height;  
    stage.addChild(circle); 
} 

setInterval(function(){ 
    createCircle(); 
    stage.update(); 
    }, 1000); 

Antwort

0

Hier ist eine wirklich einfache Demo, die Kreise auffüllt, sie nicht berühren zu gewährleisten.

  1. Generieren einer Zufallskreisgröße
  2. Wählen Sie ein zufälligen x/y
  3. überprüfen Sie den Abstand zu anderen Kreisen
  4. Wenn es nicht rührend ist, an dieser Stelle den Kreis ziehen. Wenn es in Berührung kommt, versuchen Sie es erneut

http://jsfiddle.net/lannymcnie/2o7do8kf/1/

// Basic distance checking 
var circle = circles[i], 
    dX = circle.x - x, 
    dY = circle.y - y,  
    dist = Math.sqrt(dX*dX + dY*dY); 
if (dist <= size + circle.size) { 
    ok = false; 
    break; 
} 

Diese Demo wird 100-mal (max) versuchen, jeden Kreis zu positionieren. Wenn es jemals über 100 läuft, wird es vollständig aufgeben. Sie können dies auf 10.000 erhöhen und es wird im Grunde das gleiche Ergebnis erzielt.

Dies ist offensichtlich nicht der effizienteste oder komplizierteste Weg, um dies zu tun, aber es könnte etwas nah genug an das, was Sie suchen, ohne verrückt zu werden.

Verwandte Themen