as3 获取对象坐标
Posted
技术标签:
【中文标题】as3 获取对象坐标【英文标题】:as3 getting object coordinates 【发布时间】:2013-08-18 22:17:56 【问题描述】:大家好,所以我有一段代码,女巫创建了一些圆圈,在我用另一个函数移动它们之后,我想获取它们的中心坐标,这样我就可以从圆心到圆心画线,但我没有知道怎么做...如果你能建议我 1,这里是女巫创建圆圈的代码:
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);
移动它们的代码是:
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 移动到 400,300,如下所示:
btn.graphics.drawCircle(0,0,15);
btn.x = 400;
btn.y = 300;
然后,当您在屏幕上拖动 btn 时,btn.x
、btn.x
(或在点击处理程序中,e.target.x
和 e.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;
【讨论】:
以上是关于as3 获取对象坐标的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 AS3:获取指定对象的所有子项
ActionScript 3 AS3从GetObjectsUnderPoint获取对象名称