swf간에 런타임 상에서 서로의 함수를 당겨야 하는 상황이 생기기 마련이다.
이 때, localConnection 객체를 사용하면 swf간 쉽게 동적으로 통신이 가능하다.

불려들여질 (불러들임을 당하는) swf 측에서 보통 다음과 같이 작성하게 된다.
var  lcChannerl:String = "_myChannel";
var   _receiver: LocalConnection;
_receiver = new LocalConnection();
_receiver.connect(lcChannerl);
_receiver.client = this;
 

문제가 되는 케이스는 계속해서 같은 swf를 반복적으로 로드해야 하는 상황이다.
2회이상 같은 swf 파일을 로드하면  이미 localConnetion 객체가 연결 되어 있다는 런타임 에러가 발생하는데..
이는 이전의 swf와 불러들이는 swf간에 채널이 연결되어 있어서 생기는 문제다.
따라서 문제를 해결하려면 다음과 같이 채널을 임의의 랜덤 값과 결합시킨다.
그리고나서, 크로스스크립팅을 통해 불러들인 swf content의 public 인스턴스변수 또는 속성에  접근하여 
랜덤하게 만들어진 채널 값을 넣어준다.

var ran:Number = Math.random();
var lcChannerl:String = "_eChannerl"+String(ran); // 랜덤한 수를 만들고 문자열과 결합한 임의의 채널을 만든다.
e.target.content.lcChannerls = lcChannerl;  // 불러들인 swf에 크로스스크립팅을 통해변수 또는 속성에
                                                          // 값을 넣고 채널로 활용한다.
_receiver = new LocalConnection();
_receiver.connect(lcChannerl);
_receiver.client = this;



 

'Programming > Flash AIR' 카테고리의 다른 글

영문 Flash CS5에서 progression4 일어버전 Extension 설치하기  (0) 2012.02.03
parent에 관해서  (0) 2012.02.02
플래시 최적화 링크  (0) 2012.01.22
모바일 AIR 최적화  (0) 2012.01.12
[AS3.0] try catch 초간단 예문  (0) 2011.09.15

+ Recent posts