2017-03-01 40 views
1

我正在創建與從畫布頂部落下的對象(圓圈)相關的遊戲。我有這些圓圈在x座標上隨機產生,然後以恆定速率下降。我試圖編寫一個碰撞算法,但似乎無法訪問正在下降的圓的x座標或寬度/高度。使用javascript從數組中的特定對象獲取x和y座標

這就是我如何創建圓並將它們放入數組中。 VAR彈=在我的代碼的頂部已經

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返回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); 
    } 
} 

回答

0

Shape一個的xy屬性可用於翻譯。在你的代碼中,你將它們保留爲默認值(0)並在Shape的畫布中的特定位置繪製圓。

如果您想讓x反映圓的位置,請考慮更改spawnEnemies以始終在形狀的原點繪製圓,然後將其x設置爲所需的位置。

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

您能否提供一個基本的代碼示例。我想我不完全明白你的意思 – Jay2424

+0

好的|:添加了一些代碼 – guest