0

みなさん、こんにちは。私はいくつかの円を作成するコードの魔女を持っています。別の関数でそれらを移動した後、円の中心から中心に線を引くことができるように中心座標を取得したいのですが、方法がわかりませんそれをするために...あなたが私に提案できるなら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 の座標を取得して描画することです。 ://gyazo.com/6003630d549209ec5e16ccfffe0ee689 しかし、誰かが何か提案があれば助けてください

長い投稿で申し訳ありません。ピースを中央に配置する必要がある場所がわからないので、配置できる穴コードを指定したかったのです....どんなアイデアでも大歓迎です。

4

1 に答える 1

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;
于 2013-08-16T13:42:18.907 に答える