2

HTML5キャンバスゲームのマップを保存およびロードする方法を作成しようとしています。そのためには、変数によって参照されるオブジェクト(関数)の新しいインスタンスを作成する必要があります。これは私のコードです。

    function Map(w, h) {
        if (typeof w == "undefined")
            this.width = 640;
        else
            this.width = w;

        if (typeof h == "undefined")
            this.height = 480;
        else
            this.height = h;

        this.obj = new Array();
        this.x = new Array();
        this.y = new Array();
        this.backgroundColor = "#C0C0C0";
    }

    Map.prototype.addObject = function(cl, xx, yy) {
        this.obj.push(cl);
        this.x.push(xx);
        this.y.push(yy);
    }

    function newInstance(o, x, y) {
        this.tmp = new o(); //This is what doesn't work.
        tmp.x = x;
        tmp.y = y;
        objects.push(tmp);
        tmp.create();
    }

    Map.prototype.load = function() {
        for (var i = 0; i < this.obj.length; i++) {
            newInstance(this.obj[i], this.x[i], this.y[i]);
        }
    }

私はそれをそのように使用したい:

    //When I create the map.
    var mMain = new Map();

    //This cannot be new Player() and new Block() because I don't want to load the map yet. I'm just creating the map.
    mMain.addObject(Player, 320, 240);
    mMain.addObject(Block, 0, 256);
    mMain.addObject(Block, 32, 256);
    //etc...

    //When I load the map.
    mMain.load();

PlayerオブジェクトとBlockオブジェクトがどのように機能するかの単なる例。

    function Player() {
        this.x = 0;
        this.y = 0;
        //Other variables irrelevant to this problem.
    }
    //Block object code
4

1 に答える 1

0

私は問題を理解しました。投稿する前にすべてのコードをチェックするのを忘れていたので、間違った情報を提供しました。「functionPlayer()」の代わりに、「var Player=ObjectResource;」を使用しました。ObjectResource関数を拡張したかったからです。投稿したものに変更するだけでした。

于 2012-06-24T19:35:53.347 に答える