【发布时间】:2018-11-14 11:17:36
【问题描述】:
game.state.add() 函数存在问题。出于某种原因,game 未定义:
Uncaught TypeError: Cannot read property 'add' of undefined at Object.init (main.js:51) at main.js:58
这是我的代码:
var socket; // global bir socket değişkeni.
socket = io.connect(); // server a bağlantı isteği gönderir.
//Server bağlantı isteğini dinler ve clientlara başarılı olursa geri "connect" mesajını emitler.
//Oyunun ekrana oturması için boyutları ayarlıyoruz.Browserla ilgili.
var canvas_width = window.innerWidth * window.devicePixelRatio;
var canvas_height = window.innerHeight * window.devicePixelRatio;
//Oyunumuzu belirlediğimiz divin içinde yaratıyoruz.
var game = new Phaser.Game(canvas_width,canvas_height,Phaser.CANVAS,'gameDiv');
var gameProperties = {
//oyunun gerçek boyutları.oyun dünyasının genişliği ve uzunluğu.
gameWidth:4000,
gameHeight:4000,
}
//Oyunun ana state i.
var main = function(game){
};
main.prototype ={
preload:function(){
},
create:function(){ // oyun yaratıldığında çağrılır.
console.log("Client yaratıldı.")
//serverdan connect mesajı gelince onSocketConnected fonksiyonunu çalıştır.
socket.on("connect",onSocketConnected); //serverdan gelecek connect mesajı için dinler.Socket.io bir client
// servera bağlandığında otomatik olarak connect mesajını client a gönderir.
//serverın clientlara mesaj göndermesine "emit" denir.
},
}
function onSocketConnected(){
console.log("Sunucuya bağlanıldı.")
};
var gameBootStrapper = {
init:function(gameContainerId){
game.state.add('main',main); //error here
game.state.start('main');
}
};
gameBootStrapper.init('gameDiv');
我的 index.html:
<body>
<div id="gameDiv">
</div>
</body>
<script src="client/lib/phaser.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src ="client/main.js"></script>
这里有一张index.html的图片:
..................................................... ......
【问题讨论】:
-
如果你在 var game = ... 之后使用 console.log(game) 你会看到什么
-
我看到了里面的游戏对象
-
这意味着游戏在此期间变得未定义。奇怪。
标签: javascript phaser-framework