首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何完全清除CreateJS代码和画布?

问如何完全清除CreateJS代码和画布?
EN

Stack Overflow用户
提问于 2013-12-03 08:51:06
回答 2查看 4.8K关注 0票数 2

我正在向DOM添加一个画布,然后使用CreateJS构建一个游戏。我正在初始化一个CreateJS报价器,并添加动画和图形。一切都很好,但只有一次。如果我删除了画布和游戏代码,以后就不能再添加了-画布不再显示任何内容。

我的问题是:如何正确地从内存中清除所有CreateJS函数,并从新画布重新开始?似乎CreateJS仍然保留着旧的监听器和元素,即使我删除了所有内容。

这是我的代码:

代码语言:javascript
复制
// remove canvas and then restart - this causes buggy behavior
this.removeAndRestart = function() {
    document.getElementById("gamecontainer").innerHTML = '';
    createjs.Ticker.removeAllEventListeners();
    setTimeout(this.showGame, 1000);
}

// simply start the game - this works only the first time
this.showGame = function() {
        document.getElementById("gamecontainer").innerHTML = '<canvas id="gamecanvas" width="900" height="400"></canvas>';
        this.stage = new createjs.Stage("gamecanvas");

        // create the ticker and update the stage
        createjs.Ticker.setFPS(30);
        createjs.Ticker.addEventListener("tick", tickHandler);
}
EN

回答 2

Stack Overflow用户

发布于 2013-12-04 00:39:32

如果要更改画布或重置舞台,请确保从舞台中删除DOM事件。从文档中:

enableDomEvents(Boolean enable)

启用或禁用stage添加到DOM元素(窗口、文档和画布)的事件侦听器。最好在处置Stage实例时禁用事件,否则stage将继续从页面接收事件。

更改画布属性时,必须禁用旧画布上的事件,并启用新画布上的事件,否则鼠标事件将不会按预期工作。例如:

代码语言:javascript
复制
myStage.enableDOMEvents(false);
myStage.canvas = anotherCanvas;
myStage.enableDOMEvents(true);

http://www.createjs.com/Docs/EaselJS/classes/Stage.html#method_enableDOMEvents

我不确定这是否会解决你的问题,但它可能会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2015-07-31 17:59:30

我建议你使用这个

代码语言:javascript
复制
//create listener tick
createjs.Ticker.addEventListener('tick',tick);
//remove listener tick
createjs.Ticker.removeEventListener('tick',tick);
//exemple stopped object moves in Y axe if it exceeds heigth of canvas 
createjs.Ticker.addEventListener('tick',tick);
function tick(){
    console.log( myBitmap.x +" "+myCanvas.width);
    if (myBitmap.y < myCanvas.height){
        myBitmap.y=myBitmap.y+10;
    }else{
        createjs.Ticker.removeEventListener('tick',tick);
    }
    scene.update();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20340796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档