문제

플렉스에,나는 xml 문서와 같은 다음과 같다:

var xml:XML = <root><node>value1</node><node>value2</node><node>value3</node></root>

At runtime,나를 만들려는 날짜와 제어에 대한 각 노드에서 루트,그리고 값밖에는 값에서는 XML.멀리로 말할 수 있는 내가 사용할 수 없습 BindingUtils 에 바인딩하 e4x 에서 노드를 런타임(말해줘 내가 틀렸다면 여기!), 그래서 내가 하려는 이에 의해 손:

for each (var node:XML in xml.node)
{
    var textInput:TextInput = new TextInput();
    var handler:Function = function(event:Event):void 
    {
        node.setChildren(event.target.text);
    };
    textInput.text = node.text();
    textInput.addEventListener(Event.CHANGE, handler);
    this.addChild(pileHeightEditor);
}

나는 사용자가 편집 중 하나 TextInputs,노드는 점점에 할당된 항상 마지막 중 하나에서 발생한다.내가 사용하려면 이 패턴 C#에서의 각 시간에 익명으로 함수를 만들"스냅샷"의의 값이 사용되는 값은,그래서"노드의"다른 것에서 각각 처리기 기능이다.

어떻게"스냅샷을 찍"의 현재 값의 노드에 사용할 핸들러를?또는 나를 사용하여 다양한 패턴에 Flex?

도움이 되었습니까?

해결책

마감만을 캡처 reference 변수,그것의 현재 값입니다.때문에 지역변수는 함수 범위(차단하지 않 범위)각 반복을 통해 루프를 만듭니다밈을 참조하여 동일한 변수입니다.

을 추출 할 수 있는 날짜와 생성하는 코드로 별도의 기능을 것이다,당신에게 별도의 변수의 인스턴스를 캡처하기 위해 폐쇄입니다.무언가 이것을 좋아한다:

for each (var node:XML in xml.node)
{
    var textInput:TextInput = createTextInput(node);
    this.addChild(pileHeightEditor);
}
... 

private function createTextInput(node:XML) : TextInput {
    var textInput:TextInput = new TextInput();
    var handler:Function = function(event:Event):void 
    {
        node.setChildren(event.target.text);
    };
    textInput.text = node.text();
    textInput.addEventListener(Event.CHANGE, handler);
    return textInput;
}

다른 팁

불행하게도,함수 마감 작업이상/에서 가난하게 Actionscript.변수만을 얻을"스냅샷을 때"그들이 범위를 벗어납니다.불행하게도,변수는 기능 범위,그리고 차단하지 않 범위입니다.지 않도록 작동 결국 당신이 원하는 것처럼.

를 만들 수있는 사전에서 지도 날짜->노드, 또는 은닉에서 노드 TextInput's 데이터 제공합니다.

나는 당신이 무엇을 설명했 올바르게 작동하기 때문에 쉽게/강력한 표현하는 방법이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top