【发布时间】:2015-10-25 01:44:37
【问题描述】:
我是这个网站的日常读者,但不经常是作家。由于我学习 JavaScript 已经有几个星期了,所以我制作了一个基于少量对象的小画布/JS 交叉游戏,我正在努力改进它。游戏非常简单:可以看完整代码并在这里玩:https://jsfiddle.net/vhrqb5xb/1/ 在这里:http://codepen.io/Pggo/pen/NGyQXK
// The car variable
var Car = {}
// How I create it
var resetCar = function () {
Car.x = 300 + (Math.random() * (canvas.width-600));
Car.y = -10
};
// How it's drawn
function drawCar(){
ctx.beginPath();
ctx.rect(Car.x,Car.y,32,32);
ctx.fillStyle = 'white';
ctx.fill();
Car.y += Math.random() * 80
if (Car.y > canvas.height){
resetCar();
};
}
// How game is reseit if player touch car
function drawTouchCar(){
// Evaluate coordonates of both objects, reset of touch
if (
player.x <= (Car.x + 32)
&& Car.x <= (player.x + 10)
&& player.y <= (Car.y + 30) &&
Car.y <= (player.y + 10)
){
++numberOfDeaths; // +1 Die
resetPlayer();
}
// if player pass arival line
if(player.x > (canvas.width - 170 )){
resetPlayer();
++numberOfWins; // +1 Win
}
}
现在,我使用的技巧是我有一个快速的车速来渲染它,它看起来好像不止一个,但我的游戏只依赖一个对象,汽车。我希望能够动态添加更多汽车(而不是通过创建自己的 car2 对象)。为了使用原型创建我的对象,我进行了研究和几次尝试,我能够轻松创建更多对象,但我的问题是我无法访问它们的 x 和 y 属性来使用它的碰撞功能。
所以,问题来了,我应该如何处理以实现实际对象汽车的原型,该原型可以动态创建新的汽车对象并返回它们的 x 和 y 属性,以便我可以在我的碰撞函数中重用它。实际上,我只是想了解一下,因为我被卡住了,但我并不是在寻找开箱即用的可行解决方案。
提前感谢您的回复,祝您生活愉快
【问题讨论】:
标签: javascript canvas html5-canvas prototype