使用 javascript 从数组中的特定对象获取 x 和 y 坐标

getting an x and y coordinate from a specific object in an array using javascript

我正在制作一款与从 canvas 顶部掉落的物体(圆圈)有关的游戏。我让这些圆圈在 x 坐标处随机生成,然后以恒定速率下降。我正在尝试编写碰撞算法,但似乎无法访问正在下落的圆圈的 x 坐标或 width/height。

这就是我创建圆圈并将它们放入数组中的方式。 var projectiles = [] 已在我的代码顶部声明

function spawnEnemies()
{
    var g1 = new createjs.Graphics();
    g1.beginStroke('white').beginFill('red').drawCircle(Math.floor(Math.random() * 650) + 50, 50, 20);
    var e = new createjs.Shape(g1);
    projectiles.push(e);
    stage.addChild(e);
}

这是我的碰撞算法,我试图访问圆的 x 和 y 坐标并检索它们的宽度和高度。我使用 console.log 检查并查看返回的值。对于 p.x,每次返回值 0,p.width returns NaN。我很困惑为什么 p.x 和 p.width 不起作用。

function checkCollision()
{

for (i = 0; i < projectiles.length; i++) {
    var p = projectiles[i];
    if((p.x + width) < ship.x)
    {
        hit = false;
    }
    else if(p.x > (ship.x + ship.image.width))
    {
        hit = false;
    }
    else if(p.y > (ship.y + ship.image.height))
    {
        hit = false;
    }
    else if((p.y + p.height) < ship.y)
    {
        hit = false;
    }
    else
    {
        hit = true;
        console.log(p.x);
    }
}

Shapexy 属性可用于翻译它。在您的代码中,您将它们保留为默认值 (0),并在 Shape 的 canvas.

中的特定位置绘制圆圈

如果您希望 x 反映圆的位置,请考虑更改 spawnEnemies 以始终在 Shape 的原点绘制圆,然后将其 x 设置为所需的位置。

g1.(...).drawCircle(0, 50, 20);
var e = new createjs.Shape(g1);
e.x = Math.(...);