在创建它的函数结束后,Javascript对象被设置为undefined

时间:2014-08-20 22:24:37

标签: javascript createjs

使用 create.js ,但每当quequeSetup()结束队列设置为未定义时,console.log()已经证明了这一点。下面是受影响的片段。

var queue;

function init() {
    queueSetup();
};

function queueSetup() {
    var queue = new createjs.LoadQueue(false);

    console.log(queue);
    queue.installPlugin(createjs.Sound);
    console.log(queue);
    queue.addEventListener("complete", queueLoaded);
    queue.loadManifest([
        {id:"nbckg", src:"images/nbckg.png"},
        {id:"newgame", src:"images/newgame.png"}
    ]);

    console.log(queue);
}

function queueLoaded() { 
    //the following console.log logs undefined
    console.log(queue);

    compName = "NULLCOMPNAME "; 
    stage = new createjs.Stage("MyCanvas");

    createjs.Ticker.addEventListener("tick", tick);

    //LOAD MAINMANU

    // loadMainMenu();
    initUI();
}

2 个答案:

答案 0 :(得分:0)

我不熟悉createjs,但在queueSetup()中,var queue创建了一个名为queue的新变量,该变量作用于该函数。要在函数外部引用queue变量,请忽略var

答案 1 :(得分:0)

正如其他人所提到的,您正试图访问一个不是全局变量的变量。它仅在queueSetup功能中可用。您可以将它声明为window.queue并完成它,但不是这样做,最好将其返回并传递给queueLoad函数。

function init() {
   queueSetup();
};

function queueSetup() {
    var queue = new createjs.LoadQueue(false);

    console.log(queue);
    queue.installPlugin(createjs.Sound);
    console.log(queue);
    queue.addEventListener("complete", function() {
         queueLoaded(queue); // pass the queue variable to our queueLoaded function
    });
    queue.loadManifest([
        {id:"nbckg", src:"images/nbckg.png"},
        {id:"newgame", src:"images/newgame.png"}
    ]);

    console.log(queue);
    return queue;
}

function queueLoaded(queue) { // add the variable as an argument
    //the following console.log logs undefined
    console.log(queue);

    compName = "NULLCOMPNAME "; 
    stage = new createjs.Stage("MyCanvas");

    createjs.Ticker.addEventListener("tick", tick);

    //LOAD MAINMANU

    // loadMainMenu();
    initUI();
}