2010-01-30 37 views
3

我试图找出如何动态地将绕一大圈(类似于一个钟面),但动态的,所以如果数字的逛了一圈数为5或27 ..他们会数正确的空间。动态间距绕一大圈数

我发现了一些代码(见下文),看起来像它可能会帮助,但我在实施它的麻烦。我不知道我是如何将这回归到圈子和数字的。

任何帮助将不胜感激。 感谢

function getNPointsOnCircle(center:Point, radius:Number, n:Number = 10) : Array 

{

var alpha:Number = Math.PI * 2/n; 
var points:Array = new Array(n); 

var i:int = -1; 
while(++i < n) 
{ 
    var theta:Number = alpha * i; 
    var pointOnCircle:Point = new Point(Math.cos(theta) * radius, Math.sin(theta) * radius); 
    points[ i ] = center.add(pointOnCircle); 
} 

return points; 

}

+0

包括你的代码几乎完全我本来期望的答案,给出你的问题。你有什么特别的麻烦? – 2010-01-30 22:16:51

+0

嗨,我正在寻找这个。我设法重现它/'移植到iOS SDK – boliva 2011-08-24 13:55:00

回答

3

该代码工作完美。这是如何使用它:

var center:Point = new Point(100,100); 
var radius = 100; 
var n = 10 


var p:Array = getNPointsOnCircle(center, radius, n) 


var myContainer:Sprite = new Sprite(); 
myContainer.graphics.lineStyle(1); 

for (var k = 0; k <p.length;k++) 
{ 
    myContainer.graphics.drawCircle(p[k].x,p[k].y,5); 
} 

addChild(myContainer); 
+0

非常感谢!我添加了你的其他代码,它的工作正常.....现在我只是要把我的头围绕它! :) 如果我有这个权利的getNPointsOnCircle功能构建圈子与你的参数,可以myContainer中建立的位置标记。 更改myContainer是我将代码添加数字或其他任何东西的地方?我想我明白了! 再次感谢 – dmschenk 2010-01-31 02:52:05

+0

没错这就是它!所以如果你想对这些标记进行编号,你所要做的就是将它们(例如textfield)放置在myContainer精灵的位置。例如 会将myText变种:文本字段=新的TextField(); myText.text =“1”; myContainer.addChild(myText); myText.x = //选择阵列点中的一个,并指定其x myText.y = //选择相同的阵列点及其其y – Allan 2010-01-31 04:43:32