需要使用数组和对象的JavaScript帮助吗

需要使用数组和对象的JavaScript帮助吗,javascript,arrays,object,Javascript,Arrays,Object,我对JavaScript有点陌生(在学校刚开始使用它),我一直在四处寻找,以便在课堂上完成这个程序。由于某些原因,我无法让它正常工作(无论我目前正在做什么),我试图用导弹对象数组填充玩家对象。。。在将代码转换为使用对象之前,我能够显示“missles”,但现在我被卡住了 我只需输入必要的代码: function Player(){ this.x = c.width/2; this.y = c.height-20; this.w = 50; this.h = 10;

我对JavaScript有点陌生(在学校刚开始使用它),我一直在四处寻找,以便在课堂上完成这个程序。由于某些原因,我无法让它正常工作(无论我目前正在做什么),我试图用导弹对象数组填充玩家对象。。。在将代码转换为使用对象之前,我能够显示“missles”,但现在我被卡住了

我只需输入必要的代码:

function Player(){
    this.x = c.width/2;
    this.y = c.height-20;
    this.w = 50;
    this.h = 10;
    this.dx = 30;
    this.score = 0;
    this.missles = new Array();}

function Missle(x, y){
    this.x = x;
    this.y = y;
    this.dy = 10;
    this.w = 8;
    this.h = 8;
    this.visible = "false";}


function init1P(){
if (playing == "true"){
    player = new Player();
    animate1P();
}}

function animate1P(){
cntxt.clearRect( 0, 0, c.width, c.height );

cntxt.fillStyle="#000000";
cntxt.fillRect(0,0,c.width,c.height);

cntxt.fillStyle="#ffffff";
cntxt.font="34px Verdana";
cntxt.fillText(player.score, 10, c.height-10);  

cntxt.fillStyle="#ffffff";

cntxt.fillRect(player.x,player.y,player.w,player.h);

//cntxt.fillRect(comp.x,comp.y,comp.w,comp.h);

if ( player.missles.visible == "true" ) {
    cntxt.fillStyle = "#FF0000";
    cntxt.fillRect( player.missles.x, player.missles.y, player.missles.w, player.missles.h );
    //isHit();
    if ( hit == "false" ) {
        player.missles.y -= player.missles.dy;
        if ( player.missles.y <= 0 ) {
            player.missles.visible = "false";
        }
    }
}

// request new frame
if ( playing == "true" ) {
    requestFrame( function() { animate1P(); } );
}

//moveComp();
checkBoundaries(player);
//checkBoundaries(comp);
//isHit(player);
//isHit(comp);  }

function shoot() {
player.missles.push(new Missle(player.x + player.w/2, player.y + 10));
player.missles.visible = "true";
hit = "false";}
函数播放器(){
此.x=c.宽度/2;
这.y=c.高度-20;
这是w=50;
这个h=10;
这是1.dx=30;
这个分数=0;
this.missles=新数组();}
功能导弹(x,y){
这个.x=x;
这个。y=y;
这个.dy=10;
这是w=8;
这个h=8;
this.visible=“false”}
函数init1P(){
如果(播放==“真”){
player=新玩家();
动画1p();
}}
函数animate1P(){
cntxt.clearRect(0,0,c.宽度,c.高度);
cnText.fillStyle=“#000000”;
cntxt.fillRect(0,0,c.宽度,c.高度);
cnText.fillStyle=“#ffffffff”;
cntxt.font=“34px Verdana”;
cntxt.fillText(player.score,10,c.height-10);
cnText.fillStyle=“#ffffffff”;
cntxt.fillRect(player.x,player.y,player.w,player.h);
//cntxt.fillRect(组件x、组件y、组件w、组件h);
如果(player.missles.visible==“true”){
cntxt.fillStyle=“#FF0000”;
cntxt.fillRect(player.misses.x,player.misses.y,player.misses.w,player.misses.h);
//isHit();
如果(点击=“假”){
player.missles.y-=player.missles.dy;

如果(player.missles.y您的玩家应该有几个导弹,您可以使用数组来表示:

this.missles = new Array();
使用数组时,您必须循环(例如使用
for
)将某些内容应用于每个元素。因此,执行
player.missles.visible=“false”
实际上只是在数组本身上设置属性,而不是在每个元素上设置属性。您必须执行以下操作:

for(var i = 0; i < player.missles.length; i++) {
  player.missles[i].visible = "false";  // player.missles[i] is one item on each iteration
}

你希望每个玩家都有多发导弹吗?目前,你有一个数组,并将
导弹推到它上面,但同时你通过这样做来表现得好像只有一发导弹,例如导弹。可见。好吧,只有一名玩家…我正在尝试为班级创建一个太空入侵者游戏…所以只有一名玩家支持sed有导弹,我希望一次屏幕上出现不止一个导弹……感谢您的快速响应!@steveax请注意。D34thSt4lker:如果您有新问题,请单独提问。@Gilles指出。我会帮助清理。嘿@pimvdb还不确定这个论坛是如何工作的,但我编辑了我的初始问题(还有一个问题)我想也许你可以再帮我一次…谢谢!!非常感谢不要介意…我意识到我的数组名为“points”,正在使用“pos”来填充它…无论如何,谢谢你!!
for(var i = 0; i < player.missles.length; i++) {
  if ( player.missles[i].visible == "true" ) {
    // ...
}
if(player.missles[i].visible) {
  // ...