Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flash as3在两个圆之间画一条线_Flash_Actionscript 3_Drawing_Connect - Fatal编程技术网

flash as3在两个圆之间画一条线

flash as3在两个圆之间画一条线,flash,actionscript-3,drawing,connect,Flash,Actionscript 3,Drawing,Connect,我试图在任意位置画两个圆,并在这两个圆之间画一条线——但flash似乎没有在我的代码中记录圆的x | y坐标。我该怎么做呢。更好的是,如果我拖动其中一个圆,直线将保持这些点之间的连接,我该如何做呢?这是我的密码: var sw = stage.stageWidth; var sh = stage.stageHeight; var cr = 6; //circle radius var circleColor = 0x000000; var numCircles = 2; var circleAr

我试图在任意位置画两个圆,并在这两个圆之间画一条线——但flash似乎没有在我的代码中记录圆的x | y坐标。我该怎么做呢。更好的是,如果我拖动其中一个圆,直线将保持这些点之间的连接,我该如何做呢?这是我的密码:

var sw = stage.stageWidth;
var sh = stage.stageHeight;
var cr = 6; //circle radius
var circleColor = 0x000000;
var numCircles = 2;
var circleArray = [];
var lineCanvas:Sprite = new Sprite();
addChild(lineCanvas);
var lineColor = 0x000000;
var lineWeight = 1;

function init(){
    drawCircle();
}

function drawCircle(){
    for (var i = 0; i<numCircles; i++){
        var xPos = randomRange(cr, sw-cr);
        var yPos = randomRange(cr, sh-cr);
        var newCircle:Shape = new Shape();
        newCircle.graphics.beginFill(circleColor);
        newCircle.graphics.drawCircle(xPos,yPos,cr);
        newCircle.graphics.endFill();
        circleArray.push(newCircle);
        addChild(newCircle);
    }
    drawLine();
}

function drawLine(){
    for (var i = 0; i<numCircles-1; i++){
        trace (circleArray[i].x);
        lineCanvas.graphics.lineStyle(lineWeight,lineColor);
        lineCanvas.graphics.moveTo(circleArray[i].x,circleArray[i].y);
        lineCanvas.graphics.lineTo(circleArray[i+1].x,circleArray[i+1].y);
    }
}

function randomRange(minNum:Number, maxNum:Number):Number {  
    return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);  
}

init();
var sw=stage.stageWidth;
var sh=舞台高度;
var-cr=6//圆半径
var circleColor=0x000000;
var numCircles=2;
var circleArray=[];
var lineCanvas:Sprite=新Sprite();
addChild(lineCanvas);
var lineColor=0x000000;
var线宽=1;
函数init(){
画圈();
}
函数drawCircle(){

对于(var i=0;i您没有设置圆的x,y属性,而是在x,y位置绘制。这与设置x和y属性不同。即使在xPos,yPos绘制,您的圆的x,y为零。您需要在0,0处绘制,然后通过设置属性在x,y处移动圆,而不是在x,y处绘制

newCircle.graphics.drawCircle(0, 0, cr);
newCircle.x = xPos;
newCircle.y = yPos;

如果你想连续更新线条,那么你可以监听帧事件并在任何圆圈移动时更新线条。

包含圆圈的精灵在技术上仍然处于
0,0
,你只是在一个随机位置绘制了圆圈。如果你不保存该位置,你将无法在此之后引用它

不应使用偏移绘制圆,而应在精灵的中心绘制圆,并将精灵移动到随机位置:

newCircle.graphics.drawCircle(0, 0, cr);
newCircle.x = xPos;
newCircle.y = yPos;
要在移动圆时更新线,应添加事件侦听器
MouseEvent.MOUSE\u MOVE
event.ENTER\u FRAME
。拖动圆时,事件应调用
drawLine()
函数。此外,还应添加
lineCanvas.graphics.clear();
绘图线的开头