【问题标题】:How do I create a "stage.update ()" exclusively for the object?如何专门为对象创建“stage.update()”?
【发布时间】:2013-10-18 13:16:20
【问题描述】:

我的屏幕上有 10 张图片和 6 条文字。我知道每次调用“stage.update()”都会重新设计视图屏幕。

我只有两个需要常量“stage.update()”的对象。第一个是计时器,需要每秒更新一次文本,第二个是可以在屏幕上拖动的图像。

如何专门为对象创建“stage.update()”?


尝试:

  1. 我为单个画布制作了一组“舞台”:

    canvas = document.getElementsByTagName ('canvas') [0];
    stage['full'] = new createjs.Stage(canvas);
    stage['chronometer'] = new createjs.Stage(canvas);   
    

    执行时一个取消另一个的问题:

    stage ['full']. update ();
    stage ['chronometer']. update (); 
    
  2. 我尝试创建容器。

    containerTest = new createjs.Container(); 
    stage.addChild(containerTest);  
    

    问题? 无法仅更新容器中的内容。

【问题讨论】:

    标签: javascript html canvas easeljs stage


    【解决方案1】:

    有了自动收报机和计数器,我认为你可以做你的事情:

    var counter = 0;
    createjs.Ticker.addEventListener("tick", handleTick);
    var chronometer = ...
    chronometer.cache(xChrono,yChrono,widthChrono,heightChrono);
    
    function handleTick(event) {
       // handle your drag and drop
       // ...
       if (counter == maxValue) { // maxValue = 1000 / createjs.Ticker.getInterval()
           // redraw your chronometer
           // ...
           counter = 0;
           chronometer.updateCache();
       } else {
           counter++;
       }
       stage.update();
    }
    

    【讨论】:

    • 这或多或少是我所做的。然而,运行“stage.update()”的计时器中的每次更改都会再次绘制整个屏幕。在另一个论坛中指出要创建两个“画布”,每个“舞台”,但不知道哪个选项的处理成本更高。
    • 也许“DisplayObject.cache()”是您当时正在寻找的方法。它允许您防止缓存的内容在每次滴答时重新渲染。有了这个,你可以“缓存”你的计时器对象,然后每秒更新这个缓存。
    • 有趣。你能举个例子吗?
    • 我已经编辑了我的答案。我还将您重定向到文档link
    • 阅读官方网站与您的示例相反。抱歉,我从 HTML5 开始,我的英语不好。我了解我需要缓存不会更改的对象并让计时器脱离缓存。是这样吗? (我知道在示例中它是“反向的”)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多