我正在构建pong并在初始化方法中创建一个paddle,但是,即使将paddle存储为全局变量,该paddle仍未定义。我也试过把它变成'窗口'的属性。我实际上并不想将它存储为全局,但我无法弄清楚为什么它仍未定义。
var startBtn = $('#startBtn');
startBtn.on("click", function() {
initialize();
});
var initialize = function() {
paddleOne = {
x: 20,
y1: 200,
y2: 270,
setPaddle: drawPaddle(this.x, this.y1, this.y2),
translateUp: function() {
var new_y1 = this.y1 + 10;
drawPaddle(this.x, new_y1, this.y2);
}
};
document.onkeydown = function(event) {
if (event.which == 49) {
event.preventDefault();
paddleOne.translateUp();
};
对象的属性不应该在我的js文件中可用吗?
修改
我试图将drawPaddle的函数存储为paddleOne对象的属性,以防函数调用的顺序出现问题:
paddleOne = {
x: 20,
y1: 200,
y2: 270,
drawPaddle: function () {
var context = canvas.getContext('2d');
context.strokeStyle = 'white';
context.lineWidth = 10;
context.beginPath();
context.moveTo(this.x, this.y1);
context.lineTo(this.x, this.y2);
context.stroke();
},
translateUp: function() {
var new_y1 = this.y1 + 10;
this.drawPaddle(this.x, new_y1, this.y2);
},
translateDown: function() {
var new_y2 = this.y2 + 10;
this.drawPaddle(this.x, this.y1, new_y2);
}
};
我最后做的事情是不可取的,我想知道正确的方法。我做的是删除我的js文件周围的document.ready函数声明,然后将脚本加载标记放在html文件的底部。虽然它现在知道桨对象但不知道它的任何属性但它感觉非常糟糕。但是,这将是项目中唯一的js文件。
答案 0 :(得分:-1)
声明球拍的变量:
var paddleOne; // <============ your paddle variable
var startBtn = $('#startBtn');
startBtn.on("click", function() {
initialize();
});
var initialize = function() {
paddleOne = {
x: 20,
y1: 200,
y2: 270,
setPaddle: drawPaddle(this.x, this.y1, this.y2),
translateUp: function() {
var new_y1 = this.y1 + 10;
drawPaddle(this.x, new_y1, this.y2);
}
};
document.onkeydown = function(event) {
if (event.which == 49) {
event.preventDefault();
paddleOne.translateUp();
};
现在此代码中的paddleOne
变量随处可用