控制AS3中的锚点/曲线

时间:2013-01-15 16:44:09

标签: actionscript-3

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

基本上,当我画这样的东西时:

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中绘制的曲线,如果这更容易。

1 个答案:

答案 0 :(得分: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
}