2011-12-12 79 views
2

我想创建一个简单的点阵列,以45度为增量表示一组顺时针坐标,这样阵列就会(从12点开始):flash as3 - 创建一个坐标点阵列

var coordArray : Array = [ 
        new Point(0,-1), 
        new Point(1,-1), 
        new Point(1,0), 
        new Point(1,1), 
        new Point(0,1), 
        new Point(-1,1), 
        new Point(-1,0), 
        new Point(-1,-1) 
        ]; 

我正在寻找最有效的方式来创建此数组(理想情况下,坐标本身通过某种方程生成)。什么是最好的方法来做到这一点?我想要做的就是在舞台上根据剪辑创建一个相对于剪辑当前坐标的舞台坐标,例如,如果剪辑的移动距离为50px,而剪辑的深度为0,它会在coordArray [0]位置移动50px,或在x方向移动0 * 50,在y方向移动-50px(0,-1)。

+0

请详细说明。你想通过分解多边形来生成这些点吗?你的确切实施是什么?如果您想要最佳答案,则需要提供更多信息:D – 2011-12-12 20:22:27

+0

请参阅修订后的问题。 – mheavers

+0

是否适合某种游戏? – bassneck

回答

3
var points:Array = []; 
var length:int = 50; 
var angle:int = 45; 
for(var i:int = 0; i < 360/angle; i++) 
{ 
    radian:Number = i * angle * Math.PI/180; 
    var p:Point = new Point(Math.cos(radian) * length, Math.sin(radian) * length); 
    points.push(p);  
} 

例如,你有一个clip,并希望它在var angle:int = 36度移动var speed:int = 50像素。

radian:Number = angle * Math.PI/180; 
clip.x += Math.cos(radian) * speed; 
clip.y += Math.sin(radian) * speed; 
+0

@mheavers,嘿,我修复了一些错别字。它现在有效 - 我检查过了。 – bassneck

+0

再次编辑我的答案。我总是忘记,Math.sin/cos接受以弧度表示的角度。这一次它真的有效:) – bassneck

+0

是的 - 修订工作 - 感谢您的帮助! – mheavers