XML을 사용하여 플렉스 구성 요소를로드하는 방법. 시나리오는 이와 같이 간단합니다. 3 개의 버튼이 필요합니다.하지만 true 또는 false 옵션은 xml에 표시되어야하는지 여부를 나타냅니다.xml을 사용하여 플렉스 구성 요소로드
답변
당신은 당신의 질문에 정확하게 명확하지, 그래서 내가 두 가지 방법으로 답변 해 드리겠습니다 :이 경우 외부 MXML에게
이 필요
1. 당신은 컴파일해야 mxmlc.exe가있는 XML 파일 (또는 .mxml로 이름을 바꾸어 Flex Builder에 포함)을 사용하고 SWFLoader 구성 요소를 사용하여 파일에 액세스합니다. 저는 SWFLoader에 대한 많은 경험이 없으므로 그것을 찾으려면 맡길 것입니다.
2. 당신은 HTTPService를 만들기 외부 XML
을 통해 구성 요소의 속성을 설정 여기에 ID를 할당하고 XML 파일을 가리 키도록 URL 속성을 사용해야합니다. 결과 형식을 지정하지 마십시오. 그런 다음 결과 이벤트를 사용하고 XML로드가 완료 될 때 실행할 함수를 가리 킵니다. 그것은 다음과 같아야합니다
<properties>
<button1Enabled>false</button1Enabled>
<button2Visible>true</button2Visible>
<button3Text>"TEXT"</button3Text>
</properties>
이 당신의 함수 foo가 어떻게 보일지입니다 :
<mx:HTTPService id="service" url="myXml.xml" result="Foo (event)" />
는 인 myXML은 다음과 같습니다 말할 수 있습니다. HTTPServices가 myXml.xml의로드를 완료하면 실행됩니다.
private function Foo (e : ResultEvent) : void {
myButton.enabled = e.result.properties.button1Enabled; // false
myOtherButton.visible = e.result.properties.button2Visible; // true
myLastButton.label = e.result.button3Text; // "TEXT"
}
이 함수는 서비스 결과를 가져오고 다양한 단추를 XML에 정의 된대로 몇 가지 속성을 할당합니다. 또는 service.lastResult를 사용하여 스크립트의 어느 곳에서나 최신 결과에 액세스 할 수 있습니다.
희망이 도움이됩니다.
내 코드를 확인해보십시오. 아이디어를 얻을 수 있습니다. – Kevin
로드 스태틱 xml 및 xml을 객체로 변환하기위한 멋진 XML 조작 도구는 appcorelib을 확인하십시오.
// 액션 스크립트 코드
수입 mx.controls.Menu; import flash.events.MouseEvent;
private var menu12:Menu; private function init():void { menu12 = new Menu(); menu12.labelField = "@label"; menu12.dataProvider = xmlDP; menu12.showRoot = false; menu12.width = popUpButton.width; popUpButton.popUp = menu12; }
// XML 정보
<menu1 label="Some introduction" />
<menu2 label="Disabled State (disabled)." enabled="false" />
<sep1 type="separator" />
<menu3 label="parent">
<menu4 label="child1" />
</menu3>
<menu5 label="parent (disabled)" enabled="false">
<menu6 label="child1" />
<menu7 label="child2" />
<menu8 label="child3" />
</menu5>
<menu9 type="separator" />
<menu10 type="separator" />
<menu11 id="leftButton" label="Left" type="radio" groupName="radioGroup" toggled="true" enabled="true" />
<menu12 id="rightButton" label="Right" type="radio" groupName="radioGroup" enabled="false" />
<menu13 id="popupButton" label="Popup" type="radio" groupName="radioGroup" enabled="false" />
</root>
// 구성 요소 당신의 도움 Aethex에 대한
<mx:PopUpButton id="popUpButton"
label="Please select an item"
openAlways="true"
creationComplete="init();" />
감사합니다. 이제 popupButton의 메뉴에 어떻게 적응할 것입니까?
무슨 뜻인지 모르겠지만 메뉴에 이벤트 리스너를 추가 하시겠습니까?이 경우
그냥 추가menu12.addEventListener (event, eventHandlerFunction);
예 :
가menu12.addEventListener (MouseEvent.CLICK, menu12Clicked);
플렉스 자동 인수로 menu12Clicked 함수에 이벤트를 전달한다.
menu12.addEventListener (MouseEvent.CLICK, function (e : MouseEvent) : void {
menu12Clicked (e, "argument");
});
내가 PopUpButtons과 경험을했습니다,하지만 내가 태그 menu12 해당하는 xmlDP 점을 가정하더라도 당신은 무엇을 코드에서 해야 일이 : 여러 인수를하고 싶었다면, 당신은 사용할 수 있습니다. 또한 "@label"은 menu12 내부에 정의 된 라벨 필드를 가리키고 있다고 가정합니다. 개인적으로, 나는 XML을 중첩하는 것을 좋아한다. 그래서 나는 "@ label"이 무엇을해야 하는지를 모른다. menu12 태그 안에 레이블이 중첩되어 있으면 xmlDP.label을 사용합니다.
이 질문은 분명하지 않습니다. 아마도 그것이 어떻게 작동해야하는지 또는 최선의 시도에 대한 코드 스 니펫을 게시하십시오. –
당신은 mxml을 의미합니까? 또는 XML을 dataProvider로 사용 하시겠습니까? – CookieOfFortune