2016-01-21 51 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()中调用它,会导致它失败。 –