2011-04-08 3 views

답변

1

우선 swf 사이의 통신은 값으로 전달되어야합니다 (실제 매개 변수는 완전히 평가되고 결과 값은 형식 매개 변수의 값을 보유하는 데 사용되는 위치로 복사됩니다). 참조로 전달하면 각 swf가있는 샌드 박스가 위반됩니다. (로컬 연결은 여러 swf 파일간에 사용할 수 있기 때문에).

어쨌든 나는 당신이 왜 묻는 지 알고 싶다. 방어 복사가 필요한지 확인하고 있습니까? (그 이유는 직접이 정보를 파기하기로 결정한 이유입니다.)

+0

데이터 관리자 클래스가있는 매우 큰 flex 앱이 있습니다. 별도의 swfs로 여러 하위 브라우저 창을 생성하는 주 swf가 있습니다. 각 swf는 해당 데이터에 액세스해야하며 참조로 전달 된 경우 데이터 바인딩을 보존하는 것이 더 쉽습니다. –

+0

LocalConnection에 50k 한도가 있다는 사실을 더한 것 –

2

LocalConnection 개체를 통해 전달 된 데이터는 보낸 사람이 파일에 직렬화 한 다음 수신기에서이를 deserialize하여 새 개체를 만듭니다.

사용한 직렬화 프로토콜은 AMF입니다. (사용자가 registerClassAlias을 사용하여 클래스를 매핑하면 전달한 것과 동일한 유형의 개체가 수신되고 그렇지 않으면 Object 개체가됩니다).

그래서 수신 swf에서 개체의 새로운 복사본을 얻을 수 있습니다. 또한 클래스를 매핑하는 경우 매개 변수없는 생성자 또는 선택적 매개 변수 만 사용하는 생성자가 있어야합니다. 그렇지 않으면 수신 측이 비 직렬화 할 때 객체에 Error가 발생합니다.

+0

그래, 나는 (비록 AMF에 대해서는 몰랐지만) 그래도 많이 생각했다. 불행히도 데이터 바인딩 기능이 필요하므로 콜백을 통해 처리해야합니다. –

관련 문제