Javascript 在EaselJS(CreateJS)中安全处理stage元素

Javascript 在EaselJS(CreateJS)中安全处理stage元素,javascript,performance,easeljs,createjs,Javascript,Performance,Easeljs,Createjs,我有一个带有一个小动画类的应用程序。animation类创建一个画布(使用jQuery),创建一个使用该画布的createjs.Stage元素,然后使用这个Stage元素在短时间内制作一些动画 当动画完成后,我想清理所有东西,以便新动画可以做同样的事情 使用Stage类时,需要添加一些侦听器,例如createjs.Ticker.addEventListener(Stage),您可能需要添加DomeEventListener 我试图找出如何安全地删除stage和canvas,到目前为止,我发现一些

我有一个带有一个小动画类的应用程序。animation类创建一个画布(使用jQuery),创建一个使用该画布的
createjs.Stage
元素,然后使用这个Stage元素在短时间内制作一些动画

当动画完成后,我想清理所有东西,以便新动画可以做同样的事情

使用Stage类时,需要添加一些侦听器,例如
createjs.Ticker.addEventListener(Stage)
,您可能需要添加DomeEventListener

我试图找出如何安全地删除stage和canvas,到目前为止,我发现一些信息表明,在将stage设置为null之前,有必要将stage canvas设置为null(
stage.canvas=null

我还在stage类上找到了一个方法:

.removeAllEventListeners()

下面是我的问题:

  • 如果画布和舞台仅添加到动画类中,那么这样做是否足够:

    var animation = new Animation();
    // do some stuff, call some methods on the animation object, and then:
    animation = null;
    
    我想,您必须使用
    jQuery.remove()
    或其他方法手动从主体中移除画布,以摆脱画布

  • 如果上述方法不正确,在将后台设置为null之前完成动画时,
    .removeAllEventListeners()
    是否足以调用



  • 我通常不知道如何确保所有东西都是垃圾收集的,所以欢迎任何建议

    您找到过这个问题的答案吗?当var动画不再可访问时,不需要animation=null。唯一可能将画布或舞台保留在内存中的是,是否仍然附加了侦听器,或者jQuery是否保留了对它们的引用。因此,手动清除所有侦听器并同时使用jQuery.remove()就足够了。