我正在关注这个MelonJS教程。我熟悉OOP-类,构造函数等......我对构造函数有一些疑问。
在以下代码段中...
1)是init
一个melonJS特殊函数(我通过API读取,http://melonjs.github.io/docs/me.ObjectEntity.html,似乎不是甜瓜)或JavaScript?它似乎是在创建playerEntity时自动调用的......调用init
的是什么?
2)有时会调用this
(this.setVelocity
),有时调用me
(me.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')) {
答案 0 :(得分:1)
init
是一个构造函数 - 使用Object.extend()方法创建的每个对象都将实现一个定义init
方法的接口。
至于this
与me
- 请参阅documentation:
me
指的是melonJS游戏引擎 - 所以所有的melonJS功能都是
在me
命名空间中定义。
this
将引用给定上下文中的this
。
例如,在您提供的代码段中,它将引用
玩家实体的实例。