我对Javascript还比较新手,也许这只是一个初学者的错误,但我在查找时没有发现任何特别有帮助的东西。我正在编写一个游戏,并尝试构建一个暂停菜单对象。
我想做的其中一件事是使菜单上的按钮成为暂停菜单对象内的对象,以方便组织管理。最终我会添加事件处理程序到这些对象中,我也想在暂停菜单对象内完成这些操作。有些按钮还没有完全编码好,但我想至少让一些东西在继续之前可以正常工作。
我使用 Raphael.js v1.5.2 来渲染形状。Raphael 的其他部分都可以工作,但与此不同的代码看起来不太令人愉快,所以我希望类似于这种代码。
目前我的问题是,当我执行 var pause_menu = new pause_menu(); 时,实际上什么都没有呈现。
这是我目前为暂停菜单编写的代码:
//Pause Menu Object:
function pause_menu() {
function pause_button() {
this.button = game.rect(0, 350, 150, 50, 5);
this.text = game.text(75, 375, 'PAUSE');
}
function resume_button() {
this.button;
this.text;
}
function quit_button() {
this.button;
this.text;
}
this.pause_button = new pause_button(); //the button that the user presses to pause the game (I want an event handler on this to trigger .show() method for presently hidden menu items)
this.resume_button = new resume_button();
this.quit_button = new quit_button();
this.box = game.rect(150, 50, 400, 300, 5).hide(); //the box that surrounds the menu when it appears
}
var pause_menu = new pause_menu();
好的,这是解决方案(带有事件处理程序):
var pause_menu = {
pause_button: { button : game.rect(0, 350, 150, 50, 5).click(function (event){
pause_menu.menu_box.show();
}), text : game.text(75, 375, 'PAUSE') },
menu_box: game.rect(150, 50, 400, 300, 5).hide(),
resume_button: {},
quit_button: {}
};
var pause_menu = new pause_menu();
时,会覆盖您的pause_menu
函数。 - user113716var pause_menu = new pause_menu();
不在同一作用域内。它是否被覆盖是因为变量名与函数名相同? - Michael Taufen