2013-08-16 161 views
0

大家好,所以我有一段代码女巫创造了一些圈子,并且在我用另一个函数移动它们之后,我想要获得它们的中心坐标,这样我就可以画出从中心到圆圈的中心线,但是我不有任何想法如何做到这一点......如果你能建议我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和移动的BTN对象.X和.Y到400300这样的:

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

然后你屏幕上拖动BTN,btn.xbtn.x(或在点击处理程序中,e.target.xe.target.y)始终是圆的中心。或者,如果你不能或不想这样做,你可以得到btn的界限(相对于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;