2013-08-06 1 views
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 기능을 호출; drawLayer (0); stage.update();

if segmentsArray [0]. alpha = 0.5; 그 모양을 위해 작동하지만 작동하지 않는 segmentsArray [0] .addEventsListener ('click', function) {segmentsArray [0] .alpha = 0.5;})

답변

1

그냥 beginFill 현재 모양에 영향을 미치지 않습니다, 당신은 segmentsArray[index].graphics.clear()다시 그리기 모양해야합니다.

beginFill()은 속성에 대한 설정자가 아니라 drawRect()과 같이 subsequents 명령에 영향을주는 명령입니다.