35

私はJavascriptに少し慣れていないので、これは単なる初心者の間違いかもしれませんが、周りを見回しているときに特に役立つものは見つかりませんでした. ゲームを書いていて、一時停止メニューのオブジェクトを作成しようとしています。

私がやりたいことの 1 つは、整理のためにメニューのボタンを pause_menu オブジェクト内のオブジェクトにすることです。最終的には、これらのオブジェクトにイベント ハンドラーを追加するつもりであり、pause_menu オブジェクト内でも同様に行いたいと考えています。一部のボタンはまだ完全にコード化されていませんが、続行する前に少なくとも何かが機能するようにしたいと考えています。

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();

OK、これが解決策です(イベントハンドラーを使用):

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: {}

};
4

2 に答える 2

39
var pause_menu = {
    pause_button : { someProperty : "prop1", someOther : "prop2" },
    resume_button : { resumeProp : "prop", resumeProp2 : false },
    quit_button : false
};

それから:

pause_menu.pause_button.someProperty //evaluates to "prop1"

などなど。

于 2011-06-21T18:18:46.690 に答える