2

我正在创建一个简单的游戏,我需要一些指导来调试一些数据。我的 HTML 文件中有一个 div,我希望他显示一些在用户操作更改某些变量时会更改的数据。

例如var xPosition,我想将数据发送到 HTML 中的 div,这样我就可以看到xPosition.

我真的不知道从哪里开始创建这个功能。

我的问题:

  1. 是否可以在此类中创建事件并向他注册一些将显示所有更改数据的元素?
  2. 我必须为这种事情使用一些计时器吗?

这是“类”:

(function ($) {
    $.Player = function (element) {
        this.element = (element instanceof $) ? element : $(element);
        this.movmentSpeed = 10;
        this.size = $(element).width();
        this.xPos = 0;
        this.yPos = 0;
    };


    $.Player.prototype = {
        //register events
        InitEvents: function () {
            var that = this;
            $(document).keydown(function (e) {
                var key = e.which;
                if (key == 39) {
                    that.moveRight(400);
                } else if (key == 37) {
                    that.moveLeft();
                }
            });

            this.element.css({
                left: this.xPos
            });
        },

        //movment functions
        moveRight: function (worldWidth) {
            if ((this.xPos + this.size) <= worldWidth) {
                this.xPos += this.movmentSpeed;
                this.element.css("left", '+=' + this.movmentSpeed);
            }
        },
        moveLeft: function () {
            if (this.xPos > 0) {
                this.xPos -= this.movmentSpeed;
                this.element.css("left", '-=' + this.movmentSpeed);
            }
        }
    };

} (jQuery));

这里的HTML:

<div id="player">
<div id="debugData"> <div>
<script>
var player = new $.Player($("#player"));
        player.InitEvents();

</script>

(对不起我的英语不好)

4

1 回答 1

1

jsFiddle 演示

我会说在 Class 中有一个内部函数会有所帮助。甚至可能有一个设置,您可以通过执行来打开日志记录player.logging = true;,并将其默认为 false;

logging = false在您的原型中,只需为我们的原型函数添加一个公共原型变量log()

您可以使用的内部函数可能很简单:

    logging : false, // our default

    log : function (str) {
        if (this.logging) {
            $('#debugData').html(str);
        }
    },

通过这种方式,您可以您的log(this.xPos);(或您想要记录的任何内容)留在您的代码中,并且通过player.logging = true;在您实例化您的类时删除它们,它们不会出现,直到您将该代码放回原处。

于 2013-01-21T23:07:57.320 回答