Javascript 未捕获类型错误:无法读取属性';设置';未定义的

Javascript 未捕获类型错误:无法读取属性';设置';未定义的,javascript,phaser-framework,Javascript,Phaser Framework,我制作了一个构造函数(并将其置于预加载函数之上),如下所示 character = function(CharX,CharY,CharSpeed){ this.x = CharX ; this.y = CharY; this.speed = CharSpeed; this.AddSpriteSheet = function (SprX,SprY,key) { this.character = game.add.sprite(SprX,SprY,key);} }; 稍后在create函数中我添

我制作了一个构造函数(并将其置于预加载函数之上),如下所示

character = function(CharX,CharY,CharSpeed){
this.x = CharX ;
this.y =  CharY;
this.speed = CharSpeed;
this.AddSpriteSheet = function (SprX,SprY,key) {
this.character = game.add.sprite(SprX,SprY,key);}
};
稍后在create函数中我添加了

var Char1 = new character(game.world.width*0.5,game.world.height*0.5,5);
Char1.AddSpriteSheet(game.world.width*0.5,game.world.height*0.5,'character');
Char1.anchor.set(50,50);
控制台读取

“未捕获的TypeError:无法读取未定义的属性“set”

我做错了什么


编辑:使错误更可见

您的构造函数
字符
没有属性
锚定
,因此,
Char1.anchor
不存在,也不存在
Char1.anchor.set
您正在创建一个自定义类来表示字符,但它不是相位器精灵,因此,除非您自己定义,否则它没有精灵所具有的任何方法/属性。如果您想创建自己的类来扩展Phaser.Sprite,我建议您同时查看和。只需在谷歌上搜索“phaser extend sprite”就可以帮助您找到其他资源

基本上,您需要执行以下操作:

function Character(game, x, y) {   
    Phaser.Sprite.call(this, game, x, y, 'sprite key');   
    // define other properties for your character
}
Character.prototype = Object.create(Phaser.Sprite.prototype);
Character.prototype.constructor = Character;
然后你会将你角色的所有方法添加到原型中。

未定义的“bca”集合的“集合”是Pixi与“setTo”Phaser的比较

Char1.锚定装置(50,50); 取而代之 Char1.anchor.setTo(0.5);//0.5,0.5将指向精灵正方形的中心,如果这样做的话。 这也是.scale.setTo()的真理


另外,如果您使用create函数创建新的原型对象,我建议您遵循此示例

不要添加任何名为
anchor