ソケットを使用して JavaScript ゲームを作成しようとしていますが、オブジェクトの OOP で行き詰まります。オブジェクトの関数内からオブジェクトの変数を参照する際に問題があります。
ここでいくつかの問題が発生する可能性があります。レンダリング関数ではなく、オブジェクト内から描画関数を呼び出しています。また、オブジェクト リテラルの設計が正しく行われているかどうかもわかりません。
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で見つけることができます。
ありがとう!