簡體   English   中英

javascript:未捕獲的參考錯誤

[英]javascript: uncaught reference error

我正在使用Canvas做一個JavaScript游戲。 但是,我得到了該錯誤(下圖),並且未顯示背景圖像。 我懷疑以下4個文件,因為其他文件沒有造成任何麻煩。 我想這個問題與game_state有關...我該如何解決這個問題呢? 我苦苦了兩天:(請幫幫我..

錯誤圖片1

錯誤圖片2

index.html

<!DOCTYPE html>
<html lang="ko">

<head>
 <meta charset="utf-8">
 <title>Lion Travel</title>

 <!--GameFramework-->
 <script src="/.c9/gfw/GameFramework.js"></script>
 <script src="/.c9/gfw/FrameCounter.js"></script>
 <script src="/.c9/gfw/InputSystem.js"></script>
 <script src="/.c9/gfw/SoundManager.js"></script>
 <script src="/.c9/gfw/GraphicObject.js"></script>
 <script src="/.c9/gfw/SpriteAnimation.js"></script>
 <script src="/.c9/gfw/ResourcePreLoader.js"></script>
 <script src="/.c9/gfw/DebugSystem.js"></script>
 <script src="/.c9/gfw/Timer.js"></script>
 <script src="/.c9/gfw/FrameSkipper.js"></script>
 <script src="/.c9/gfw/TransitionState.js"></script>

 <!--GameInit-->
 <script src="/.c9/gfw/gfw.js"></script>

 <!--Game Logic-->
 <script src="/.c9/RS_Title.js"></script>

</head>

<body>
    <canvas id="GameCanvas" width="800" height="600">html5 canvas is not supported.</canvas>
</body>
</html>

gfw.js

function onGameInit() {
    document.title = "Lion Travel";

    GAME_FPS = 30;
    debugSystem.debugMode = true;

    resourcePreLoader.AddImage("/.c9/title_background.png");
    soundSystem.AddSound("/.c9/background.mp3", 1);

    after_loading_state = new TitleState();
    setInterval(gameLoop, 1000 / GAME_FPS); 
}

window.addEventListener("load", onGameInit, false);

RS_Title.js

function TitleState() 
{
    this.imgBackground = resourcePreLoader.GetImage("/.c9/title_background.png");
    soundSystem.PlayBackgroundMusic("/.c9/background.mp3");
    return this; 
}

TitleState.prototype.Init = function()
{
    soundSystem.PlayBackgroundMusic("/.c9/background.mp3");
};

TitleState.prototype.Render = function()
{
    var theCanvas = document.getElementById("GameCanvas");
    var Context = theCanvas.getContext("2d");

    //drawing backgroundimage
    Context.drawImage(this.imgBackground, 0, 0);
};

TitleState.prototype.Update = function()
{

};

GameFramework.js

var GAME_FPS;
var game_state = after_loading_state;

function ChangeGameState(nextGameState)
{
    //checking essential function
    if(nextGameState.Init == undefined)
        return;

    if(nextGameState.Update == undefined)
        return;

    if(nextGameState.Render == undefined)
        return;

    game_state = nextGameState;

    game_state.Init();
}

function Update() 
{
    timerSystem.Update();

    game_state.Update();

    debugSystem.UseDebugMode();
}

function Render()
{
    //drawing
    var theCanvas = document.getElementById("GameCanvas");
    var Context = theCanvas.getContext("2d");

    Context.fillStyle = "#000000";
    Context.fillRect(0, 0, 800, 600);

    //game state
    game_state.Render();

    if(debugSystem.debugMode)
    {
        //showing fps
        Context.fillStyle = "#ffffff";
        Context.font = '15px Arial';
        Context.textBaseline = "top";
        Context.fillText("fps: "+ frameCounter.Lastfps, 10, 10);
    }
}

function gameLoop()
{
    Update();
    Render();

    frameCounter.countFrame();
}

這里的問題是,即使在after_loading_state初始化之前(僅在加載文檔之后才進行初始化),您也game_state使用對象after_loading_state初始化game_state 由於這個game_state仍未undefined

要解決此問題,請更改var game_state = after_loading_state; 在GameFramework.js中更改為var game_state; 並添加game_state = after_loading_state; 作為gameLoop函數的第一行。 這樣,變量的初始化將以正確的順序進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM