0

我正在创建一个 melonJS 游戏。

在我的播放器实体 -game.PlayerEntity = me.ObjectEntity.extend({中,它的更新函数检查碰撞:

game.PlayerEntity = me.ObjectEntity.extend({
   var collision = me.game.collide(this); 

   if (collision) {
       if (collision.obj.type == me.game.ACTION_OBJECT) {
           console.log("NPCname: " + game.NPCEntity.init); //get settings from NPCEntity
       }
   }

然后在我的NPC实体对象中game.NPCEntity = me.ObjectEntity.extend ({,我想回到settings.name上面的PlayerEntity。所以为此我创建了一个闭包returnSettings()

1)console.log(settings.name)按预期输出“Lee”

2)return settings.name输出“未定义”

为什么是这样?

game.NPCEntity = me.ObjectEntity.extend ({
    init : function(x, y, settings) {
        settings.image = "wheelie_right";
        settings.spritewidth = 64;
        settings.name = "Lee";
        this.parent(x, y, settings);

        this.collidable = true;
        this.type = me.game.ACTION_OBJECT;

        console.log(settings.name); //works
        console.log("returning... " + returnSettings()); //works

        //closure to return settings values externally
        function returnSettings () {
            return settings.name; //returns undefined when called by PlayerEntity above.
        }
    },

谢谢!

4

2 回答 2

1
于 2014-03-16T21:27:33.393 回答
0

显然,您可以在定义之前调用该函数,因为它是以函数名称(){}方式而不是表达式定义的:https ://stackoverflow.com/a/261682/880114

但是我看不到您从哪里返回该函数以从其他地方调用它。

于 2014-03-16T21:19:23.990 回答