2017-07-13 221 views
-1

「設置」我做了一個構造函數(並把它上面的預載功能)這樣遺漏的類型錯誤:無法讀取屬性未定義

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);} 
}; 

後來在創建功能,我添加

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); 

控制檯讀取「Uncaught TypeError:無法讀取未定義的屬性'set' 我做了什麼錯?

+0

您永遠不會添加任何名爲'anchor'的屬性 –

回答

0

您正在創建一個自定義類來表示一個字符,但它不是一個Phaser Sprite,因此它沒有任何Sprite所執行的任何方法/屬性,除非您自己定義它們。如果你想創建自己的類來擴展Phaser.Sprite,我建議你看看this forum postthis example。只要使用Google搜索「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; 

然後你會增加你的所有人物的方法到原型。

0

您的構造函數character沒有屬性anchor,因此Char1.anchor不存在,Char1.anchor.set也不存在。

0

'設置' 的未定義」 BCA 「中設置」 是陂溪的比較 「setTo」 移相器的

Char1.anchor.set(50,50); 替代由 Char1.anchor.setTo(0.5); // 0.5,0.5將指向精靈廣場的中心,如果是這樣的意圖 這也是真理.scale.setTo();

此外,如果你創建新的原型對象出創建功能我會建議遵循此示例https://phaser.io/examples/v2/games/tanks

相關問題