2013-07-18 4 views
0

위치를 설정하고 연속적으로 스프라이트 배열 내에서 개별 요소를 그리는 데 문제가 있습니다. 독립 실행 형 스프라이트는 별다른 문제가 없지만 배열에서 문제가 발생했습니다.XNA - 인덱스 당 스프라이트 배열 위치 설정

간단한 예제 문제를 설명하기 위해, 실제 코드는 적절한이지만, 동일한 개념 -

myVar[0]=myImg; 
myVar[0].Position.X=300; 
myVar[0].Position.Y=300; 
myVar[1]=myImg; 
myVar[1].Position.X=400; 
myVar[1].Position.Y=400; 

지금이 그릴로 이동하는 경우에만 myVar에 [1] 400 @ myVar에 있기 때문에 그린 [0] 또한 같은 입장을 취했다. 동일한 이미지가 여러 요소에서 사용될 때만 문제가됩니다. 본질적으로 나는 단지 5 개의 다른 타일 이미지를 사용하여 20x20 격자 배열을 그리기 때문에 자연스럽게 일부 재사용 될 것입니다.

스프라이트 배열이 인덱스 위치 당 ... 가능합니까? 이 문제를 여러모로 해결할 수 있습니까?

난 이후 인덱스 당 그리기를 반복하고 위치를 설정하여에이 이전을 회피 할 수 있었지만 지금은 위치에 따라 다른 함수에서 계산을해야하고, 내 위치는 모든 요소에 대해 동일

환호 & 도움을 주셔서 감사합니다! :)

답변

0

여기서 한 가지 문제는 여러 개체를 한 번 참조한다는 것입니다.

myVar [0]과 myVar [1]이 (가) 같은 메모리 위치를 가리키고 있습니다. 가장 할 일은 모든 항목에 대해 새로운 Sprite를 만드는 것입니다.

for (int i = 0; i < myVar.length; i++) { 
    myVar[i] = new Sprite(<your img>);//This will ensure you have a different 
            //memory location for each Sprite object 
            //but keep the same image. 
} 

그런 다음 위치를 적절하게 수정할 수 있습니다.

+0

도움 주셔서 감사합니다. XNA 특정 솔루션은 파일 이름이 들어있는 String 배열을 사용하고 문자열 배열의 임의의 인덱스에서 파일 이름을 사용하여 스프라이트를 사용하여 myVar 인덱스 당 새로운 Sprites를로드합니다. 이제 완벽하게 작동합니다. :) – CLogan