2011-11-09 2 views
0

짧은 이야기mxmlc에 컴파일러 - 소스 경로 라이브러리 경로

같은 클래스는 소스 경로에 다시 기호 연결 클래스로 SWF 라이브러리에 mxmlc에 컴파일러에 전달된다 선호. 그러나 컴파일러는 소스 경로의 정의를 사용하므로 해당 클래스의 새 인스턴스를 만들면 라이브러리 심볼의 새 인스턴스가 만들어지지 않습니다. 컴파일러에게 심볼에 연결된 정의 (SWC에서 정의 된 것)를 선호한다고 어떻게 알 수 있습니까?

긴 이야기

내가 FLA 파일에 내 디자인 자산을 가지고 있고이 클래스 (예를 들어, "com.myproject.view.MyAsset.as")에 연결되어있다. 그런 다음 자산을 SWC 라이브러리로 내보내 컴파일러에 전달합니다. 이제 클래스의 인스턴스 (new MyAsset();)를 만들면 라이브러리 객체의 새 인스턴스가됩니다.

하지만 소스 폴더에는 다른 클래스가 있습니다 (예 : "com.myproject.model. *"). 그래서 컴파일러에도 소스 폴더를 전달해야합니다. 이제는 컴파일러에서 라이브러리 객체에 할당 된 SWC가 아닌 소스 경로의 MyAsset.as 정의. 이제 MyAsset의 새 인스턴스를 만들면 라이브러리 객체가 복제되지 않습니다.

컴파일러에게 SWC에서 정의를 선호?

감사

+0

이 문제에 대한 해결책을 찾았습니까? –

+0

번호. FLA의 심볼 이름을 고유 한 이름 (예 : com.myproject.view.MyAsset_design)으로 변경하고 GetDefinitionByName을 사용하여 심볼을 인스턴스화해야했습니다. –

답변

0
I have the same class defined in SWF library and in a source folder. I need to include both the library and the source folder, how do I tell the compiler which one to prefer? 

동일한 클래스는 클래스가 패키지 구조 외에도 정확한 코드를 가지고 있다는 것을 의미합니까? 그렇다면 코드의 중복 버전을 피하기 위해 리팩터링을 강력히 추천합니다. 메모리가 나를 지원한다면 '원본 폴더'에있는 폴더가 우선해야합니다. 그것은 당신의 경험과 일치합니다.

그렇지 않으면 이름 충돌을 피하기 위해 하나의 클래스 세트 이름을 변경해야합니다.

+0

같은 클래스입니다. 먼저 라이브러리 심볼의 링키지 클래스로 사용됩니다. 이 기호는 SWC로 내보내집니다. 그러나 동일한 클래스가 소스 경로의 mxmlc 컴파일러에서 사용 가능하면 연결된 심볼없이 사용됩니다. –

+0

동일한 클래스 인 경우; 왜 컴파일러에서 어떤 것을 사용 하느냐가 중요합니까? – JeffryHouser

+0

라이브러리 심볼의 링키지 클래스로 사용 된 인스턴스를 인스턴스화하고 (SWC로 내 보낸 경우) 해당 심볼의 새 인스턴스를 만듭니다. –