【发布时间】: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