我正在想一种方法,使用CreateJS在不存在其他形状的地方创建形状。在这种情况下,我不太确定从哪里开始,甚至不知道该搜索什么。基本上,我的目标是让圆圈出现在舞台上,但只能出现在其他人没有的地方。
我的问题是,解决这个问题的好方法是什么?有没有任何文档或类似的东西可以帮助我实现创建代码的目的?
链接到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);
这里有一个非常简单的演示,它填充圆圈,确保它们不会接触。
- 生成随机圆形大小
- 随机选取x/y
- 检查与其他圆的距离
- 如果它没有接触,在那个点上画一个圆圈。如果触摸到,请重试
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;
}
这个演示将尝试100次(最多)来定位每个圆。如果它跑过100,它就会完全放弃。你可以把它增加到10000,它基本上得到相同的结果。
这显然不是最有效或最复杂的方法,但它可能会让你在不发疯的情况下找到足够接近你想要的东西。