0

我有一个从 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(); 绘制层(0);阶段.更新();

如果我输入segmentsArray[0].alpha =0.5; 它适用于那个形状,但是当我把它放在 segmentsArray[0].addEventsListener('click', function){segmentsArray[0].alpha=0.5;}) 中不起作用

4

1 回答 1

1

只需设置beginFill不会影响当前形状,您还必须segmentsArray[index].graphics.clear()重新绘制形状。

beginFill()不是属性的设置器,而是影响后续命令的命令,drawRect()例如。

于 2013-08-07T20:01:15.563 回答