2008-09-19 10 views
4

MXML은 같은 정말 매우 강력한 데이터 바인딩을 수행 할 수 있습니다 나는 BindingUtils 클래스는 단순 속성에 값을 바인딩 할 수 있습니다 것으로 나타났습니다중복 복잡한 MXML은

<mx:Button id="myBtn" label="Buy an {itemName}" visible="{itemName!=null}"/> 

하지만 바인딩도 위 이 작업을 수행. AS3 코드에서 동일한 작업을 수행 할 수 있습니까? 아니면 Flex가 자동으로 MXML에서 많은 코드 줄을 생성합니까? 는 사람부터, 순수 AS3에서 위를 복제 할 수 :

var myBtn:Button = new Button(); 
myBtn.id="myBtn"; 
??? 

답변

0

내가 플렉스 생각이 처리하는 작은 익명 함수를 생성합니다.

ChangeWatcher를 사용하여 비슷하게 할 수 있습니다. changewatcher 호출에서 새로운 익명 함수를 만들 수도 있습니다.

2

bindSetter을 사용하는 방법입니다. 또한 예제에서 MXML이 컴파일되기 전에 ActionScript로 변환 될 때 장면 뒤에서 수행되는 방법이기도합니다.

// assuming the itemName property is defined on this: 
BindingUtils.bindSetter(itemNameChanged, this, ["itemName"]); 

// ... 

private function itemNameChanged(newValue : String) : void { 
    myBtn.label = newValue; 
    myBtn.visible = newValue != null; 
} 

...

제외하고는이 같다 이상 액션 변환에 MXML에 의해 생성 된 코드보다 일반적인 될 수있다. 이 예에서 각 바인딩 표현식에 대해 하나씩 두 개의 함수가 생성되었을 것입니다.

2

컴파일러 설정에 -keep 인수를 추가하여 mxml 파일을 컴파일 할 때 flex가 생성하는 자동 생성 코드를 볼 수도 있습니다. 프로젝트 속성을 선택하고 "Flex 컴파일러"옵션을 확인한 다음 "추가 컴파일러 인수 :"에 이미있는 항목에 "-keep"을 추가하여 설정을 찾을 수 있습니다.

일단 완료되면 Flex는 소스 폴더에 "생성 된"디렉토리를 만들고 내부에 컴파일하는 동안 임시로 사용 된 모든 파일을 찾습니다.