2012-08-16 4 views
0

컨테이너 스프라이트 내의 MovieClip 클래스 인스턴스 내부에서 변수 값을 편집하는 중에 문제가 발생했습니다.AS3 : 스프라이트 내의 객체 변수 변경

영화 클립은 스프라이트 "컨테이너"의 모든 어린이하지만 내가 for 루프 내에서 container.getChildAt(i).variable = value;로를 순환 할 때 나는 에러 -

Scene 1, Layer 'AS', Frame 1, Line 87 1119: Access of possibly undefined property name_ through a reference with static type flash.display:DisplayObject. 

어떻게 이러한 변수를 편집 할 수 있습니다를 얻을? 무슨 일 이니?

답변

3

대개 문제는 getChildAt()가 DisplayObject를 반환한다는 것입니다. DisplayObject는 동적 클래스가 아니므로 임의로 변수를 만들고 액세스 할 수 없습니다. 반면에 MovieClip은 동적 클래스이므로 원하는대로 임의의 변수를 만들고 액세스 할 수 있습니다. 문제는 에 액세스하는 객체가 MovieClip이라는 사실을 알고 있어도 Flash에서이를 알지 못하고 앞서 언급 한 getChildAt()가 반환하는 DisplayObject의 기능으로 제한됩니다.

이 문제를 해결하려면 처리중인 객체가 MovieClip임을 Flash에 명시 적으로 알려줘야합니다. 당신은 플래시 객체가 무비 클립이 될 것이다 있음을 알려 이제 한 이후,이 무비 클립은 동적 클래스라는 사실을 활용하고 변수에 액세스 할 수

MovieClip(container.getChildAt(i)).variable = value; 

: 이것은 주조로 알고 무엇을 통해 이루어집니다 .

+0

완벽하게 대답합니다. +1. –

+0

또한 자식이 MovieClip 유형이라고 가정하기 전에 (container.getChildAt (i)가 MovieClip 인 경우) 수행해야합니다. 그렇지 않으면 유형 강제 변환 오류가 발생합니다. 나는 당신이 i 변수 때문에 아이들을 돌고 있다고 가정하고 있습니다. – Jordan

+0

완벽하게 일했습니다. 감사합니다! 나는 미래에 대해서도 염두에 둘 것이다. :) –