我正在开展一个项目,我将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();
};
正如我所说,颜色变化完美,但每次调用方法时不透明度都会不断增加。
我有点迷失在这里,不知道发生了什么,最重要的是为什么会这样。
非常感谢任何帮助!
答案 0 :(得分:1)
我认为find
函数存在问题。您的shape
不是节点,而是集合。试试这个:
var shape = Kinetic.stages[0].find('#' + id)[0];