我有一个从xml中绘制一堆自定义形状的代码...我希望通过更改对象的颜色并在事情发生变化时更改所有其他颜色来使每个形状可选择/可选择我的代码坏了,但我没有得到任何错误或任何它只是不起作用。
var graphicsShape
function drawLayer(layer){
for (var i =0; i < xmlDoc.getElementsByTagName("polygon").length; i++)
{
if (layer == xmlDoc.getElementsByTagName("polygon")[i].childNodes[0].attributes[4].value)
{ drawSegment(i);
}
}
}
// layer = index z
function drawSegment(a){
var vertexList = xmlDoc.getElementsByTagName("polygon")[a].childNodes;
var graphicsObject = new createjs.Graphics();
graphicsShape = new createjs.Shape(graphicsObject);
graphicsObject.setStrokeStyle(1);
graphicsObject.beginStroke(createjs.Graphics.getRGB(0,0,0));
graphicsObject.beginFill(createjs.Graphics.getRGB(255,0,0));
for(var i = 0; i < vertexList.length; i++){
graphicsObject.lineTo(vertexList[i].attributes[2].value, vertexList[i].attributes[3].value)
stage.addChild(graphicsShape);
}
segmentsArray.push(graphicsShape);
//createContainer(segmentsArray[i]);
}
function createArraysForSegments() {
for(var i=0; i <segmentsArray.length; i++){
segmentsData[i] = new Array;
}
}
function ColorChangeAddEventListener() {
for(var i = 0; i < segmentsArray.length; i++){
segmentsArray[i].addEventListener('click', colorChange(i));
}
}
function colorChange(index){
segmentsArray[index].graphics.beginFill('white');
stage.update();
}
我稍后调用这些函数 ColorChangeAddEventListener(); drawLayer(0); stage.update();
如果我输入segmentsArray [0] .alpha = 0.5;它适用于那个形状,但当我把它放在segmentsArray [0] .addEventsListener('click',function){segmentsArray [0] .alpha = 0.5;})时,它不起作用
答案 0 :(得分:1)
设置beginFill
不会影响当前的形状,您还需要segmentsArray[index].graphics.clear()
和重绘形状。
beginFill()
不是属性的setter,而是影响子句命令的命令,例如drawRect()
。