параметры функции ... проверка функции (объект) {} - PullRequest
2 голосов
/ 22 октября 2011

У меня есть функция с именем collisioncheck. Сейчас он отлично работает, проверяя переменные, которые относятся к игроку, такие как playerPosX, playerVelX, playermaskIMG и т. Д.

То, что я хочу сделать, это что-то вроде collisioncheck(object), так что, скажем, я вызываю collisioncheck(player), он будет проверять переменные, как указано выше, с помощью playerPosX и т. Д., И если я вызову collisioncheck(zombie), то вместо этого он будет проверять zombiePosX и т. д.

Как я мог это сделать?

Если у вас есть какие-либо вопросы, пожалуйста, задавайте, потому что я не очень хорош в объяснении этого ... заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

Я настоятельно рекомендую вам изменить код так, чтобы переменные типа

playerPosX
playerPosY
playerVelX
playerVelY
zombiePosX
zombiePosY
zombieVelX
zombieVelY

не отображается в вашем коде. Вместо этого zombie и player должны быть объектами с свойствами , такими как velX, velY, posX и posY.

Тогда collisionCheck может выглядеть как

function collisionCheck(object) {
    .... object.posX ...
}

Текущий объект будет сравниваться со всеми другими соседними игроками и зомби, проверяя каждое из свойств этих объектов.

Вы действительно не хотите идти по пути работы с именами переменных в виде строк. По сути, свойства делают это для вас.

1 голос
/ 22 октября 2011

Это довольно просто:

function collisioncheck(obj) {
  var posX = obj.posX;
  var velX = obj.velX;
  var maskIMG = obj.maskIMG;
}

// ...

var objectToCheck = {
  'posX' : playerPosX,
  'velX' : playerVelX,
  'maskIMG' : playermaskIMG
};

collisioncheck(objectToCheck);
0 голосов
/ 22 октября 2011

Вот пример для вас

   zombie = { 'posX' : 7,  'posY' : 95 };
   player = { 'posX' : 3,  'posY' : 95 };
   document.write(  zombie.posX );


    function CollisionCheck ( o1 , o2 )
    {

        if ( Math.abs(o1.posX - o2.posX) < 5 )
            {
                document.write ( 'Kaboom!!!' );              
            }        
    }        
    CollisionCheck ( zombie, player );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...