2012-07-27 4 views
0

내가 스프라이트의 배열이 폭 및 기타 속성 0 반환AS3 스프라이트는 비어 있고

for (i = 0; i < 3; i++) { 
    var newLine:Sprite = new Sprite(); 
    newLine.graphics.beginFill(0xFFFFFF); 
    newLine.graphics.drawRect((uiSizeX * (.25 + .25 * i)) + (doorSizeX - lineLengths[0][i])/2, uiSizeY * .5, lineLengths[0][i], lineHeight); 
    newLine.name = "lines" + i; 
    lines.push(newLine); 
} 

가 나중에 배경 스프라이트에 각각 추가

for (i = 0; i < 3; i++) { 
    uiContainer.addChild(doors[i]); 
    uiContainer.addChild(lines[i]); 
} 

그리고 나중에 소원을 각 사각형에 포함 된 사각형의 너비를 변경합니다. 배열 참조를 사용하여 width 속성을 설정할 때 :

lines[i].width = lineLengths[trialNumber][i]; 

사각형이 스테이지의 중심과 uiContainer로 이동합니다. x 값을 설정하려고하면 더 이상한 동작이 발생합니다. 스프라이트가 비어 있기 때문에 다른 질문에 대한 답변에서 수집했습니다. 스프라이트가 비어 있기 때문에 혼란 스럽습니다. 사각형의 속성에 액세스하거나 변경하려면 어떻게해야합니까? 스프라이트가 비어 있지 않도록하려면 어떻게해야합니까?

답변

0

스프라이트의 너비 또는 높이를 직접 변경하려고하지 마십시오. 예기치 않은 모든 종류의 동작으로 이어질 수 있으므로 실제로 수행해야합니다.

당신이 스프라이트의 크기를 조정하려는 경우, 사각형 그리기 :

sprite.graphics.endFill(); 

당신은 아마 별도의에이 모든 논리를 포장한다 :

또한
var sprite = lines[i]; 

sprite.graphics.beginFill(0xFFFFFF); 
sprite.graphics.drawRect(newWidth, newHeight); 

endFill 전화하는 것을 잊지 마세요를 클래스를 사용하여 스프라이트를보다 쉽게 ​​다시 그릴 수 있습니다. 심지어 더 나은, Sprite 확장하고 다시 그리기/크기를 조정할 모든 논리를 포함하는 클래스를 만듭니다.

+0

그래, 효과가 있고 수업이 올바른 방법 일 것입니다. 그래도 예상치 못한 동작으로 인해 크기가 직접 조정되는 이유는 무엇입니까? – squarebear

관련 문제