2014-11-16 2 views
1

다음 코드의 for 루프가 작동합니다 (무비 클립의 두 인스턴스를 스테이지에 넣음)하지만 어떻게 작동합니까? 같은 이름의 인스턴스가 두 개 이상 생성되지 않습니까? 주석 부분에 표시된 것처럼 루프에서 코드를 빼낸 경우 네임 스페이스 충돌에 대해 예상했던 1151 오류 메시지가 표시됩니다.actionscript 3.0 for 루프에 스프라이트 인스턴스 생성

for (var j=0; j<2; j++) { 
    var mascot:Mascot = new Mascot(); 
    mascot.x = 150*j + 100; 
    mascot.y = 100; 
    addChild(mascot); 
} 
/* 
var mascot:Mascot = new Mascot(); 
mascot.x = 100; 
mascot.y = 300; 
addChild(mascot); 

var mascot:Mascot = new Mascot(); 
mascot.x = 250; 
mascot.y = 300; 
addChild(mascot); 
*/ 
+0

그냥 추측 : for 루프는 자체 범위가 있습니다. – DodgerThud

+0

네, 그렇게 생각했습니다. 그러나 나는 그 이론을 반박 한 몇 가지 시험을 실시했다. –

답변

0

루프를 사용하지 않을 때 나타나는 오류는 인스턴스 이름과 관련이 없습니다.

루프가 없으면 동일한 이름의 변수 2 개를 만들려고하는데 이는 컴파일 오류입니다.

다음과 같이 변경하면 작동합니다.

var mascot:Mascot = new Mascot(); 
mascot.x = 100; 
mascot.y = 300; 
addChild(mascot); 

mascot = new Mascot(); 
mascot.x = 250; 
mascot.y = 300; 
addChild(mascot); 

두 스프라이트 모두 고유 한 인스턴스 이름이 할당되므로 두 코드 샘플 모두 정상적으로 작동합니다.

+0

예, 같은 이름의 변수 두 개를 만들려고했기 때문에 오류가 발생했습니다. 그러나 "for"루프가 수행하는 작업과 정확히 일치하지 않습니다. 나는 작동하지 않는 코드를 이해합니다. 내가 이해하지 못하는 것은 "for"루프가 어떻게 작동하는지와 같은 것이다. –

+0

컴파일러가 염려하는 한, for 루프가 n 번 반복하더라도 1 개의 변수 이름 만 있으면'Mascot' 인스턴스를 만들지 만 참조 할 때는 하나의 변수 만 사용합니다. –