我正在尝试在随机位置绘制两个圆圈,并在这两个圆圈之间画一条线 - 但是闪光灯似乎没有在我的代码中注册圆圈的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();
答案 0 :(得分:3)
您没有设置圆的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;
如果您想要不断更新线条,那么您可以收听onFrame事件并在任何圆圈移动时更新线条。
答案 1 :(得分:2)
包含圆圈的精灵在技术上仍处于0,0
,您只是在随机位置绘制圆圈。如果您不保存该位置,则之后您将无法参考该位置。
不应使用偏移绘制圆形,而应将其绘制在精灵的中心 - 并将该精灵移动到随机位置:
newCircle.graphics.drawCircle(0, 0, cr);
newCircle.x = xPos;
newCircle.y = yPos;
要在移动圈子时更新该行,您应添加一个事件监听器MouseEvent.MOUSE_MOVE
或Event.ENTER_FRAME
。当您拖动圆圈时,该事件应调用您的drawLine()
功能。另外,将lineCanvas.graphics.clear();
添加到drawLine
的开头。