不透明度随着每次通话而不断增加

时间:2014-09-01 12:15:17

标签: javascript signalr kineticjs

我正在开展一个项目,我将KineticJS与SignalR结合起来,以更新服务器调用阶段。

到目前为止,一切都运行良好,对于那些不起作用的东西,我对SO的问题和答案有很大的帮助。

然而这次我无法让它工作我也找不到任何类似问题的问题。

基本上我是动态生成KineticJS阶段的初始化脚本。(这一切都很完美)代码输出如下所示:

var stage = new Kinetic.Stage({
    id: 1,
    container: 'stage-container',
    width: self.baseWidth,
    height: self.baseHeight
});

对于一个形状,它看起来像这样:

var shape129 = new Kinetic.Line({
    id: 'shape129',
    points: [249,66, 1889,66, 1889,928, 249,928, 249,66],
    fill: '#DADADA',
    opacity: 1,
    stroke: '#3B5A99',
    strokeWidth: 0,
    closed: true,
    draggable: true
});

到目前为止一切顺利。

这一切都完美呈现。

然后神奇的事情发生了,我使用SignalR方法来改变形状的颜色 使用以下代码,我得到了完美的颜色切换,但不是所需的不透明度:

signal.client.statuschange = function (id, message) {
    var shape = Kinetic.stages[0].find('#' + id);
    shape.setAttr('fill', message);
    shape.setOpacity(0.5);
    shape.getLayer().draw();
};

正如我所说,颜色变化完美,但每次调用方法时不透明度都会不断增加。

我有点迷失在这里,不知道发生了什么,最重要的是为什么会这样。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我认为find函数存在问题。您的shape不是节点,而是集合。试试这个:

var shape = Kinetic.stages[0].find('#' + id)[0];
相关问题