2013-01-15 41 views
0

我一直在寻找一种方法来控制路径内的曲线和/或锚点,例如通过使用curveTo来绘制。控制AS3中的锚点/曲线

基本上,当我画这样的事情:

thingy.graphics.curveTo(220,100,150,140); 
thingy.graphics.curveTo(60,200,50,300); 
thingy.graphics.curveTo(40,495,250,500); 
thingy.graphics.curveTo(460,495,450,300); 

我想以动态地改变这些曲线,当我做一些功能(例如拖动锚点)。换句话说,我只是想更新某些曲线的坐标,如:

覆盖

thingy.graphics.curveTo(220,100,150,140); 

thingy.graphics.curveTo(120,100,250,670);

thingy.graphics.curveTo(220,100,mouseX,mouseY);

例如。

虽然谷歌搜索我的问题的答案,我只能找到具有非常复杂的公式的长篇文章,大部分时间甚至没有任何AS3代码的伴随。由于我对数学不太好,所以我更喜欢一个简单的答案,只是显示了一种方法。

或者,我不介意控制在Flash IDE中绘制的曲线,而不是如果这更容易。

回答

0

下面是我如何接近它。

private var curveVals:Array = []; 

private var thingy:Sprite; 

public function constructor() { 
    thingy = new Sprite(); 

    var obj:Object = {cx:220,cy:100,ax:150,ay:140} 
    curveVals.push(obj); 
    thingy.graphics.curveTo(220,100,150,140); 

    obj = {cx:60,cy:200,ax:50,ay:300} 
    curVals.push(obj); 
    thingy.graphics.curveTo(60,200,50,300); 
} 

private function storeVals(cx,cy,ax,ay,index):void { 
    var obj:Object = {cx:cx,cy:cy,ax:ax,ay:ay}; 
    curveVal[index] = obj; 
    redraw(); 
} 

private function redraw():void { 
    thingy.graphics.clear(); 
    // loop through values and redraw 
} 
+0

粗糙的你不得不添加到这个,但你应该明白了。 –

+0

感谢您的回答。然而,我可以用这个小小的解释...什么是'cx','cy','ax'等(CurveX,AnchorX?)?这些值/变量放在curveVals数组中吗? – poepje

+0

另外,你能解释什么冒号+双打'cx:cx'(在行'var obj:Object = {cx:cx,cy:cy,ax:ax,ay:ay};')? – poepje

相关问题