2013-08-16 4 views
0

Привет всем, поэтому у меня есть кусок кода, который создает несколько кругов, и после того, как я переместил их с другой функцией, я хочу получить их координаты центра, поэтому я могу рисовать линии от центра до центра кругов, но я Don `T есть какие-либо идеи, как это сделать ... если вы можете предложить мне 1, вот код ведьма создает круг: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); 
    } 
} 

код с mooving является их является:

this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownH); 
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpH); 

function mouseDownH(evt:MouseEvent):void { 
    var object = evt.target; 
    object.startDrag(); 
} 

function mouseUpH(evt:MouseEvent):void { 
    var obj = evt.target; 
     obj.stopDrag(); 
} 

И код, где я рисую линии между ними:

function click1(e:MouseEvent):void{ 
    e.currentTarget.removeEventListener(MouseEvent.CLICK, click1); 
    var i:int; 
    i=1; 
    if (e.target.name!=null){ 
    trace(e.target.name); 
    sx=mouseX; 
    sy=mouseY; 
    stage.addEventListener(MouseEvent.CLICK,click2); 
    } 
} 

function click2(e:MouseEvent):void{ 
    e.currentTarget.removeEventListener(MouseEvent.CLICK, click2); 
    fx=mouseX; 
    fy=mouseY; 
    var i:int; 
    i=2; 
    trace(e.target.name); 
    var line:Shape = new Shape(); 
    line.graphics.lineStyle(1,0x0066FF,1); 
    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; 
    str=inputField.text; 
    trace(str); 
    inputField.width = 23; 
    inputField.height = 18; 
    inputField.x = (sx+fx)/2; 
    inputField.y = (sy+fy)/2; 
    addChild(inputField); 
} 

Дело в том, что я хочу нарисовать линию от центра к центру, но я получаю координаты mouseX и mouseY, потому что я не знаю, как взять центральные координаты объекта .... то, что я получаю: http://gyazo.com/6003630d549209ec5e16ccfffe0ee689 Но я хочу, чтобы линии можно сделать из центра, если кто-то имеет какие-либо предложения, пожалуйста, помогите

Извините за длинный пост, я просто не знаю, где мне нужно положить кусок с воли центризуйте их, поэтому я хотел дать код дырки, где он может быть размещен ... Я буду очень признателен за любую идею.

ответ

1

Ну, если вы нарисовали круг на 0,0 и переместили объект БТН .x и .y в 400,300, как это:

btn.graphics.drawCircle(0,0,15); 
btn.x = 400; 
btn.y = 300; 

Тогда как вы перетащить БТН вокруг экрана, btn.x, btn.x (или в обработчике кликов, e.target.x и e.target.y) всегда будет центром круга.

С другой стороны, если вы не можете или не хотите, чтобы сделать это таким образом, вы можете получить границы БТН (по отношению к this системе координат, так как именно там line втягивается), и так как это окружности, то центр границ будет центром круга:

var btn:Sprite = e.target; 
var bounds:Rectangle = btn.getBounds(this); 
var center_x:Number = bounds.x + bounds.width/2; 
var center_y:Number = bounds.y + bounds.height/2; 
Смежные вопросы