Я пытаюсь создать простую игру, используя библиотеку paper.js, чтобы получить четкие результаты на всех дисплеях, используя ее векторную схему рисования.Доступ к свойствам класса возвращает «Undefined»
Основная логика игры заключается в том, что пользователь должен перемещать «червяк» по направлению к шарам в течение определенного времени или они исчезают, каждый раз, когда мяч «попадает» или «собирается» червем, тогда мяч исчезает и новый создается в другом месте на экране, что позволяет получить больше очков.
Мне удалось получить прототипный метод, стреляющий по каждому шару, когда червь бьет его, но я стараюсь манипулировать размером шаров, когда это происходит.
Смотрите рабочий пример здесь http://goo.gl/uNcl5y
Расстояние проверяется с помощью метода ниже, и в этом методе «уничтожение» (или, когда мяч должен сжать до радиуса нуля) называется в ней:
Ball.prototype = {
checkCollision: function(linepoint, ball) {
var dist = this.point.getDistance(linepoint);
if (dist <= this.radius) {
this.destruct(ball);
}
},
destruct: function(ball) {
console.log(ball.bounds.width); //returns undefined
}
}
Это называется используя функцию Paper.js onFrame (по существу setInterval вызывается каждые 30 мс или так, используемые для анимации):
//set animations
function onFrame() {
for (var i = 0; i < balls.length; i++) {
balls[i].checkCollision(path.firstSegment.point, balls[i]);
}
}
Насколько я могу сказать, проходящей в «шары [I]» объект массив должен дать мне доступ к его свойства, и поэтому позвольте мне изменить их, достаточно уверен
destruct: function(ball) {
console.log(ball);
}
журналы
{
point: { x: 89, y: 628 },
path: Path @4,
radius: 30
}
но с использованием (шкала() представляет собой функцию преобразования встроенные в paper.js)
ball.scale(0);
возвращается
"Uncaught TypeError: undefined is not a function"
Я не могу обернуть голову вокруг того, что происходит, любые указатели будут очень благодарны.
Вам не нужно передавать мячи [i] или мяч. Значение 'this' является вызывающим объектом, поэтому вы можете использовать' this' вместо этого: http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 – HMR
Спасибо HMR, я использовал «это», но безрезультатно, отсюда и отчаянная попытка передать индекс шаровой матрицы. – user3586963
Возможно, вы вызываете код из тайм-аута или обработчика события. Если это так, попробуйте использовать bind или передать закрытие (см. Ссылку в моем другом комментарии) – HMR