所以我必须制作一个网页,其中有一件家具,你可以给它的部分上色。 首先,你必须选择一种颜色,然后点击一个架子或盒子。
到目前为止我已经做到了这一点:
http://tone-me.com/gridalea/tone.html
我遇到的唯一问题是当我在盒子,架子上添加颜色时。对于第一个盒子,它可以正常工作,但是当我再次尝试时,它不会触发onclick事件。没有任何事情发生。我的概念是我删除整个模型,然后用选定的颜色重新绘制它。但是当我尝试修改重新绘制的模型时,什么都不会发生。使用其他解决方案进行了多次测试(例如,我只重绘了被点击的部分)。
这是我的脚本: http://tone-me.com/gridalea/js/tone.js
这部分重新绘制整个模型:
function model1(){
layer.destroyChildren();
layer.clearCache();
racs1(); //adds outlines to layer
dobozok1(); //adds boxes, shelves, etc. to layer
stage.add(layer);
};
这是点击检测:
layer.children.on('click', function() {
var name=this.attrs.name;
switch (name){
case 'topl':
bc[2]=[res[0],res[1],res[2],1];
break;
case 'topb':
bc[3]=[res[0],res[1],res[2],1];
break;
case 'midr':
bc[4]=[res[0],res[1],res[2],1];
break;
case 'mids':
bc[5]=[res[0],res[1],res[2],1];
break;
case 'bottoms':
bc[6]=[res[0],res[1],res[2],1];
break;
case 'bottomb':
bc[7]=[res[0],res[1],res[2],1];
break;
default:
};
model1();
});
当它触发时,我会更改包含框颜色的bc
数组,并且数组res
具有新值。
然后我运行上面显示的model1
函数,它会破坏任务,然后用修改后的颜色重绘它们。
我用Firebug测试了它,每个变量和对象都设置了正确的值,(数组res
是个例外,你必须先点击一个颜色,让它得到它的值,我会解决的以后)
我不知道问题是什么。为什么它不会检测到多次点击。重绘后layer
有子多边形,多边形的名称属性正确,但它不再检测到它们。