我有一个问题,我怎么能让一条线被捕捉到一个物体的中心,在我的情况下,我按下按钮时绘制一些圆圈然后另一个按钮添加线但我希望它们捕捉到中心,所以当我移动圆圈时,线条会扩展/压缩我创建圆圈的代码:
function new_sond(event:MouseEvent):void
{
if (i<9)
{
i++;
q=i;
var btn:Sprite = new Sprite();
btn.graphics.beginFill(0x0099FF, 1);
btn.graphics.drawCircle(400, 300, 15);
btn.graphics.endFill();
var s:String = String(q);
btn.name=s;
var textField = new TextField();
textField.mouseEnabled=false;
textField.text = i;
textField.width = 10;
textField.height = 17;
textField.x = 395; // center it horizontally
textField.y = 292; // center it vertically
btn.addChild(textField);
this.addChild(btn);
}}
我从圆圈到圆圈绘制线条的代码
function click1(e:MouseEvent):void{
e.currentTarget.removeEventListener(MouseEvent.CLICK, click1);
if (e.target.name!=null ){
cntr=cntr+1;
trs=e.target.name;
var trn = Number(trs);
du[cntr]=trn;
sx=e.target.x+400;
sy=e.target.y+300;
stage.addEventListener(MouseEvent.CLICK,click2);
}
}
function click2(e:MouseEvent):void{
e.currentTarget.removeEventListener(MouseEvent.CLICK, click2);
fx=e.target.x+400;
fy=e.target.y+300;
var i:int;
i=2;
trs=e.target.name;
var trn = Number(trs);
u[cntr]=trn;
var line:Shape = new Shape();
line.graphics.lineStyle(1,0xFF0000,2);
line.graphics.moveTo(sx,sy);
line.graphics.lineTo(fx,fy);
this.addChild(line);
var inputField:TextField = new TextField();
inputField.border = true;
inputField.type = TextFieldType.INPUT;
inputField.width = 23;
inputField.height = 18;
inputField.x = (sx+fx)/2;
inputField.y = (sy+fy)/2;
inputField.multiline = false;
inputField.maxChars = 3;
inputField.restrict = "0-9";
inputField.addEventListener(Event.CHANGE, checkInput);
addChild(inputField);
}
很抱歉这篇长篇文章,但我真的需要一些帮助,我只是在t know how to do it and have no ideas, it is a big project i
努力模拟MaxFlow
看起来如何:http://gyazo.com/d0478d967b4cc34b59490245b3530e26
我只是想知道是否可以将线条捕捉到圆圈的中心......
答案 0 :(得分:1)
在第二次单击(在其中绘制最终点并完成线)之后,您需要有一个步骤来遍历您可能要捕捉到的所有对象。
在上述步骤中,您可以计算并查看第二个绘图点是否在对象的捕捉距离内,并将该绘图点设置为等于对象的x和y(应该是中心点)。如果没有,它将继续循环直到所有可捕捉物体都经过彻底测试。