2016-01-21 52 views
0

在createjs我試圖添加元素到階段,但只有當被函數調用。創建JS功能添加到階段

如果我下面的代碼添加到我的onload init()函數的代碼工作:

function init() 
{ 
background = new createjs.Shape(); 
background.graphics.beginLinearGradientFill(["blue", "darkgreen"], [0, 1], 0, 0, 100, 100).drawRect(0, 0, 70, 70); 
background.x = 0; 
background.y = 0; 
stage.addChild(background); 
} 

但是如果我添加它像

function init() 
{ 
loadScreen(); 
} 
function loadScreen() 
{ 
background = new createjs.Shape(); 
background.graphics.beginLinearGradientFill(["blue", "darkgreen"], [0, 1], 0, 0, 100, 100).drawRect(0, 0, 70, 70); 
background.x = 0; 
background.y = 0; 
stage.addChild(background); 
} 

我可能只是在做一些愚蠢的,任何提示讚賞。

感謝,

+0

看起來很好 - 這裏是你的代碼的小提琴。既然你只是展示了一小部分,演示還有一些額外的代碼讓它運行。 http://jsfiddle.net/lannymcnie/LpgddrL1/ – Lanny

+0

謝謝Lanny,我可以看到小提琴在工作,它的確有幫助,指出問題在於我的init函數中的其他代碼!如果您將此作爲答案張貼,我想接受這是正確的答案。 –

回答

1

確保您的變量已被聲明。

E.g. var stage; var background;

並確保它們是全球性的。

window.onload = function(){ 
    var stage; 
    var background; 

    function init(){ 
     // create reference to stage and add 'tick' listener. 
    } 
    function loadScreen(){ 
     // draw something onto the stage. 
    } 
}; 

看看這個網站的例子:http://createjs.com/docs/easeljs/modules/EaselJS.html

+0

我所有的變量都是全球性的,但感謝發佈 –

+0

你能發佈你的完整代碼嗎? – Berni

+0

嗨@berni,感謝您的回覆,我現在已經解決了這個問題,我建立的createjs網格導致了問題,它沒有正確關閉,現在已經解決了。感謝你的幫助。 –

2

刪除分號(;)loadScreen()函數defenition後

function init() 
{ 
    loadScreen(); 
} 
function loadScreen() 
{ 
    background = new createjs.Shape(); 
    background.graphics.beginLinearGradientFill(["blue", "darkgreen"], [0, 1], 0, 0, 100, 100).drawRect(0, 0, 70, 70); 
    background.x = 0; 
    background.y = 0; 
    stage.addChild(background); 

}

+0

嗨Anoop,謝謝你的回答。在函數定義之後沒有(;),只有在函數調用之後。 –

+0

@StephenKennedy但你已經給出了分號(;)功能 –

+0

函數loadScreen(); { background = new createjs.Shape()see;在代碼中loadScreen之後? –

1

我可以看到你刪除這條線 - >

myGraphics.beginLinearGradientFill(["#000","#FFF"], [0, 1], 0, 20, 0, 120).drawRect(20, 20, 120, 120); 

您是否嘗試過在init()中實例化背景,然後將該對象傳遞給負載功能?

+0

嗨阿爾貝託,謝謝你的迴應。我已經嘗試過,確實如果stage.addChild(background)在loadScreen()函數中會導致程序崩潰,但由於某種原因,如果stage.addChild在init函數中運行正常,它會讓我瘋狂 –

+0

我建議重新審視你聲明變量的方式。也許「舞臺」不是全球性的,它的範圍僅限於init() - 它是父級 - 。如果你在loadScreen()中調用它,會導致它失敗。 –