2011-06-12 7 views
1

내가 가진 주요 응용 프로그램은 다음과 선언 포함 "main.mxml" 잘 살고 같이액세스 공개, 바인딩 변수

[Bindable] 
[Embed(source="../images/common/user.png")] 
public var userIcon : Class; 

내가 다른 모듈이,에가 단추 아이콘으로 액세스하고 싶습니다. 나는 추적 정의와 시도,하지만 작업 나던 :

<s:Group width="100%" height="29"> 
    <s:layout> 
     <s:VerticalLayout horizontalAlign="center"/> 
    </s:layout> 
    <s:Button id="buttonLoad" width="80%" label="Loading" icon="{ main.userIcon }"/> 
</s:Group> 
  • 어떻게 다른 모듈에서 main.mxml 내부의 선언에 액세스 할 수 있습니까?

답변

2

MXML 클래스의 이름은 해당 인스턴스의 식별자가 아닙니다 (많은 인스턴스가있을 수 있기 때문에). MXML 파일은 파일이 아니라 클래스라고 생각해야합니다. 일반 ActionScript 클래스와 절대적으로 동일합니다. 다른 OOP 언어와 같은 규칙. 따라서 main.mxml이있는 경우 main은 해당 클래스의 클래스 이름이며 패키지는 ActionScript 클래스에서와 같이 소스 폴더를 기준으로 해당 MXML 파일 경로에 따라 결정됩니다. 그렇기 때문에 대문자 (Main.mxml은 아니지만 main.mxml은 아님)에서 MXML 클래스의 이름을 지정해야합니다.

main.mxml이 최상위 응용 프로그램 인 경우 FlexGlobals.topLevelApplication이라고 부를 수 있습니다. 그러나 일을하는 것이 올바른 방법은 아닙니다.

가장 좋은 방법은이 속성을 대상 클래스에 삽입하는 것입니다. 의존성 주입 프레임 워크/컨테이너 (Spring ActionScript 또는 RobotLegs 또는 Parsley)를 사용하여 수행 할 수 있습니다. 또는 최상위 응용 프로그램에서 모듈을 처리하는 코드 조각을 포함하는 클래스로 위임하여 수동으로 수행 할 수 있습니다. 모듈이로드되면이 값을 전달하십시오.

+0

제 3 자 프레임 워크를 사용하고 싶지 않습니다. 그래서 - 다른 모듈 변수를 액세스 할 수있는 방법이 없습니까? (공공 정적 방법을 제외하고 내가 의미하는) –

+0

나는 방법을 설명 : 개체의 계층 구조를 통해 속성의 위임. – Constantiner

+0

나는 이해하지 못한다. 제발, 몇 가지 예를 보여 주시겠습니까? –