1
我想創建一個使用套接字的JavaScript遊戲,但我被困在我的對象的OOP。我在引用對象函數內的對象變量時遇到了問題。對象文字JavaScript模式不能識別對象變量
這裏可能有幾個問題。我從對象中調用draw函數,而不是渲染函數。我也不確定對象字面設計是否正確完成。
使用Require.js和class.js,我們有user.js的:
define(['entity'],function(Entity){
var User = Entity.extend({
init: function(){
this.health= 10;
},
draw: function(ctx){
img = new Image(); // Create new img element
img.onload = function(){
// execute drawImage statements here
ctx.drawImage(img, this.posx, this.posy);
};
img.src = '/images/object.PNG'; // Set source path
}
})
return User;})
從Entity.js延伸
define(function(){
var Entity= Class.extend({
init: function(){
//object image
this.img.src = '/images/Blue-soldier.PNG';
//location
this.posx=50;
this.posy=50;
//gameplay values
this.health=1;
this.speed=0;
},
User.draw(CTX)被稱爲game.js :
var entity = new User;
this.users.push(entityid);
entity.draw(ctx);
},
This.posx和this.posy在user.draw()中無法識別。當它們被硬值替換時,它可以正常工作。我錯過了什麼?
我完整的代碼是有點較爲混亂,但你可以在https://github.com/mtbarta/canvas/blob/master/public/javascripts/client.js
感謝找到它!
你應該用'var'聲明局部變量「img」! – Pointy