gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:54:47 25 4
gpt4 key购买 nike

我试图在随机位置绘制两个圆圈,并在这两个圆圈之间画一条线 - 但 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();

最佳答案

您没有设置圆的 x、y 属性,而是在 x、y 位置绘制。这与设置 x 和 y 属性不同。即使你画在 xPos, yPos 你的圆圈的 x, y 也是零。您不需要在 x, y 处绘制,而是需要在 0, 0 处绘制,然后通过设置属性在 x, y 处移动圆。

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

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

关于flash as3 在两个圆圈之间画一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com