JavaScript构造函数和melonJS问题

时间:2014-03-05 23:27:19

标签: javascript oop constructor melonjs

我正在关注这个MelonJS教程。我熟悉OOP-类,构造函数等......我对构造函数有一些疑问。

在以下代码段中...

1)是init一个melonJS特殊函数(我通过API读取,http://melonjs.github.io/docs/me.ObjectEntity.html,似乎不是甜瓜)或JavaScript?它似乎是在创建playerEntity时自动调用的......调用init的是什么?

2)有时会调用thisthis.setVelocity),有时调用meme.game.viewport.follow)。你什么时候打电话给每个?

3)对于速度,为什么需要乘以accel * timer tick? :this.vel.x -= this.accel.x * me.timer.tick;

    /*------------------- 
a player entity
-------------------------------- */
game.PlayerEntity = me.ObjectEntity.extend({

    /* -----

    constructor

    ------ */

    init: function(x, y, settings) {
        // call the constructor
        this.parent(x, y, settings);

        // set the default horizontal & vertical speed (accel vector)
        this.setVelocity(3, 15);

        // set the display to follow our position on both axis
        me.game.viewport.follow(this.pos, me.game.viewport.AXIS.BOTH);

    },

    /* -----

    update the player pos

    ------ */
    update: function() {

        if (me.input.isKeyPressed('left')) {
            // flip the sprite on horizontal axis
            this.flipX(true);
            // update the entity velocity
            this.vel.x -= this.accel.x * me.timer.tick;
        } else if (me.input.isKeyPressed('right')) {

1 个答案:

答案 0 :(得分:1)

init是一个构造函数 - 使用Object.extend()方法创建的每个对象都将实现一个定义init方法的接口。

至于thisme - 请参阅documentation

  • me指的是melonJS游戏引擎 - 所以所有的melonJS功能都是 在me命名空间中定义。

  • this将引用给定上下文中的this。 例如,在您提供的代码段中,它将引用 玩家实体的实例。