【问题标题】:toggle KineticJs layer broken after rebuilding stage在重建阶段后切换 KineticJs 层损坏
【发布时间】:2014-02-21 03:05:15
【问题描述】:

我有一个用 KineticJs Stage 创建的画布。在这个阶段我有三层。一个是背景,并且始终处于开启状态。另外两个是叠加层,可见性由复选框切换。每当此阶段的父 div 调整大小时,我都会重绘整个阶段以保持布局正确。以下是我的切换工作的两种情况: 1.在调整大小和重绘之前。 2.如果我在重绘之前根本不切换它。

以下是它不起作用的地方: 1. 切换图层打开然后关闭。调整画布大小以触发重绘。然后尝试重新打开。在这种情况下,当我调用 show() 时,visible 属性设置为 true,但该层实际上并未显示。

单步执行代码在上述任何情况下,我都找不到层中的任何差异。然而,我确实注意到,每次重建时,每个图层的索引都会增加,即使我每次重建时都实例化了舞台和每个图层的新实例。

谁能告诉我为什么索引会增加,即使所有东西都被破坏了,为什么层没有出现?我在想 zindex 但这似乎永远不会改变,应该会出现。

这是我在每次重建之前都会做的事情:

stage = new $window.Kinetic.Stage({
                container: 'canvas',
                x: 0,
                y: 0,
                width: parent.clientWidth,
                height: parent.clientHeight
            });
            var layer = new $window.Kinetic.Layer();
            erosionLayer = new $window.Kinetic.Layer({
                visible: scope.erosionVisible
            });

这里是我切换它的地方:

 scope.$watch('erosionVisible', function(val) {
            if (!erosionLayer) return;

            var showErosion = false;

            if (!scope.erosionVisible) {
                showErosion = false;
            } else if (scope.erosionVisible) {
                showErosion = true;
            }

            if (showErosion) {
                erosionLayer.show();

            } else {
                erosionLayer.hide();
            }
        });

仅供参考,这是在 angularJs 指令中。

【问题讨论】:

    标签: javascript angularjs kineticjs


    【解决方案1】:

    解决了这个问题。出于某种原因,如果舞台已重建,我需要在切换时调用图层上的绘制。

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 2015-01-18
      • 2018-10-07
      • 2011-07-05
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多