2013-08-17 2 views
0

У меня вопрос о том, как я могу сделать строку, которая будет привязана к центру объекта, в моем случае я нарисую круги, когда нажимается кнопка, а затем другая кнопка добавляет строки, но я хочу их привязку к центру, так что, когда я двигаю круг линия простирается/сжимает код, где я создать круг:AS3 привязка к объектам

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 m работая на для моделирования MaxFlow , как она выглядит: http://gyazo.com/d0478d967b4cc34b59490245b3530e26 Я просто хочу знать, если это можно сделать линии привязки к центру кругов ...

ответ

1

После вашего второго щелчка (в котором сюжет окончательный point и завершить линию), вам нужно сделать шаг, который выполняет итерацию через все объекты, в которые вы хотите привязать.

В этом вышеописанном шаге вы можете рассчитать и посмотреть, находится ли вторая точка сюжета в пределах вашего объектного расстояния объекта и будет задана эта точка графика, равная x и y объекта (которая должна быть центральной точкой). Если нет, он будет просто продолжать цикл, пока все оснащенные объекты не будут исчерпывающе проверены.

Смежные вопросы