2014-02-11 55 views
0

我對Phaser遊戲有以下代碼。它只是用於通過使用AJAX從JSON文件加載信息來獲得關卡的可視化想法。Phaser資產從JSON文件加載問題

<!doctype html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <title>hello phaser!</title> 
     <script src="phaser.min.js"></script> 
     <script src="jquery.min.js"></script> 
    </head> 
    <body> 
    <div id="results"></div> 
    <script type="text/javascript"> 



     var game = new Phaser.Game(1024, 768, Phaser.AUTO, '', { preload: preload, create: create,renderer:renderer}); 
     var background; 

     function preload() 
     { 

       game.load.image('bg','bg.png'); 
       game.load.image('mothership', 'bird.png'); 
       game.load.image('turret','turret.png'); 





     } 

     function create() 
     { 
      //game.add.sprite(31,725,"mothership"); 
      //game.add.sprite(100,100,"turret"); 
      //background=game.add.sprite(0,0,"bg"); 
      //background.scale.setTo(5,7); 


     } 

     function renderer() 
     { 

     } 
     $.ajax({ 
         url: "TestFile5.json", 
         dataType: 'json', 
         contentType:"application/json", 
         success: function(response) { 
          //here you can use the response 
           //response can be passed to what ever js file you need. 


           game.add.sprite(response.mothership.posx, response.mothership.posy, "mothership"); 

           game.add.sprite(response.Turret0.posx, response.Turret0.posy, "turret"); 
           game.add.sprite(response.Turret1.posx, response.Turret1.posy, "turret"); 
           game.add.sprite(response.Turret2.posx, response.Turret2.posy, "turret"); 

         }, 
         error: function(response1){ 
           alert('response error') 
         } 
        }); 






    </script> 
</Body> 
</html> 

我與JSON文件和圖像一起載入此到我的在線服務器,但它似乎沒有使用game.add.sprite()功能在AJAX回調加載圖像。我用佔位符圖像獲得屏幕。位置正確,但圖像未加載。有什麼可能導致這種情況,我該如何解決?

回答

0

檢查瀏覽器中的開發工具面板(IE中的F12,Chrome中的ctrl + shift + j),然後選中網絡面板以100%確定資產確實加載完畢。如果圖像加載失敗,您還應該在控制檯中看到一個條目,因爲Phaser會在那裏發出警告。

另外值得一提的是Phaser可以加載json文件。所以你可以用Boot狀態來啓動你的遊戲,Boot狀態會將json的所有位置數據加載到它中,解析它並準備好你的遊戲狀態,它可以使用裏面的定位/紋理值。那麼你不會有任何潛在的範圍問題(你最終可能會在這裏)。

+0

你能給的移相器加載存儲在發言權的圖像的例子地處資產以.json文件夾 – user3292309

+0

還我檢查了開發工具,它拋出沒有警告或errors.so我給的代碼是正確的 – user3292309

+0

在你的'成功'功能中檢查以確保圖像實際已加載並位於緩存中:game.cache.checkImageKey('turret')。如果爲false,則可能發生競態條件(ajax在預加載之前完成)。如果屬實,我仍然懷疑範圍問題。 – PhotonStorm