모두AS3 : SWF는 외부 .as 클래스 파일에서 어떻게 컴파일됩니까?
내가 만들고있는 Flash 앱에는 다양한 "하위"SWF가로드되는 "기본"SWF가 있습니다.
주 SWF 및 하위 SWF에 대한 모든 AS3 코드는 외부 .as 클래스 파일에 포함됩니다.
즉, 각 영화에는 자체 문서 클래스 .as 파일이 있습니다.
또한 모든 공통 요소 (예 : e..g, UI 단추 및 컨트롤)에 대한 여러 .as 클래스 파일이 있습니다.
예를 들어 내 기본 SWF와 모든 하위 SWF에서 모두 "MyCommandButton"클래스를 사용합니다. 이 클래스의 코드는 모든 SWF가 참조 (가져 오기)하는 MyCommandButton.as에 있습니다.
다음은 내가 이해하지 못하는 이유입니다.
( 는 이제 MyCommandButton.as의 코드가 빨간색 버튼을 그립니다한다고 가정 해 봅시다.를)먼저, 내가 하위 SWF의 모든를 컴파일합니다. 이 그리는 버튼을 블루을되도록
은 다음, 내가 대신 빨간색의, MyCommandButton.as을 변경합니다.
다음 주 SWF를 컴파일합니다. 나는 응용 프로그램 (main.swf), 내가 을 기대를 실행하면
기본 SWF의 모든 버튼이되고 블루 (즉, main.swf가 컴파일 될 때 지정된 MyCommandButton.as 무엇 때문에) 및 자식 국부 펀드의 모든 버튼은 내가 만든 변화를 의미 대신 빨간색 (즉 그들이 컴파일 때 지정된 MyCommandButton.as 무엇 때문입니다.)
, 버튼의 모든 파란색이 될 것입니다 to MyCommandButton.as는 자식 SWF를 모두 다시 컴파일하지 않았지만 모든 하위 SWF에 영향을 미쳤습니다.
왜 이런가요? 이것이 일어나는 이유에 대한 간단한 설명이 있습니까?
미리 감사드립니다.
이있는 * 멋진 * 대답 - 감사 meddlingwithfire! 흥미 롭습니다. 해킹 관점에서로드 된 (하위) SWF가 부모 클래스를 다시 쓸 수 없어야하는 이유를 알았습니다. 그러나 실수로 각 SWF가 실제로 자체 포함되어 있다고 가정했습니다. 그래서 부모는 "classA"의 버전을 가질 수 있고,로드 된 SWF는 "classA"의 자체 (다른) 버전을 가질 수 있습니다. 그것이 작동하는 방식으로 작동한다는 사실은 꽤 중요한 이점입니다. 자식 SWF가 동일한 클래스 정의를 참조하는지 여부를 결정할 때 전체 네임 스페이스를 사용한다고 가정합니다. – mattstuehler
각 SWF는 자체적으로 실행됩니다. 각 SWF를 자체적으로 실행하여 볼 수 있습니다. SWF를 다른 SWF로로드하기 시작할 때 추가되는 보안 규칙이 몇 가지 있습니다. 네임 스페이스에서 수정 - 클래스 네임 스페이스는 클래스를 확인할 때 고려됩니다. 따라서 부모는 기본 네임 스페이스에서 "MyCommandButton"을 정의 할 수 있으며 자식은 "child.MyCommandButton"을 정의 할 수 있으므로 충돌이 발생하지 않습니다. 또한 -이 대답을 수락하면 대답으로 표시하십시오. :) – meddlingwithfire