플래시 무비는 무비간에 서로 LocalConnection를 사용하여 데이터 통신을 할 수 있다.
로컬 파일간 통신을 연결시켜주는 것이 바로 LocalConnection()클래스이다. 이 클래스를 Delegate한 변수는 이제 무비간 통신을 할 수 있는 기능을 얻게된다. 그럼 어떠한 무비간에 통신을 할까..핸드폰처럼 어떠한 중간 매개체가 있어야 한다. 이를 채널이라고 정의하고 A.swf에서 B.swf로 보내는 채널이 있어야 하고 B.swf에서 A.swf에 보내는 채널이 각각 다른 이름으로 설정되어야 한다.

이러한 채널을 통해 받는 객체의 메서드를 실행하고자 할때는 약 3가지 방법이 있다.
1 LocalConnection의 동적 하위클래스를 만들어 예전에 사용하던데로 콜벡함수를 만들어 사용한다.
2 LocalConnection의 하위 클래스를 만들어 모든 메서드를 미리 등록한다.
3 콜벡함수의 호출이 발생하면 LocalConnection의 Client를 지정하여 메서드를 처리하도록 한다.


방법적으로 3가지로 분류하였지만 사실 결과는 크게 다르지 않다. 1번 같은 경우 유연하지만 인터페이스등의 정의가 곤란하고, 2번은 프로젝트 마다 수시로 메서드를 변경해 주어야 하며, 3번은 어도비에서 제공하는 예제와 같은 방법이다. 비디오 클래스와 같이 Client 설정하는 방식으로 보통 3번을 자주 사용하지만 앞서 2가지 방법도 있다는 것을 알면 더 유연할 수 있겠다.



[ 위와 아래는 서로 독립적인 무비이다 ]
 



LocalConnection을 사용하면 대부분의 데이터를 보낼 수 있다. 심지어 동적 클래스를 보내어 클래스 내부의 public변수도 참조할 수 있다는 것을 확인해 보았지만, 그러한 방법이 그렇게 쓸모있어 보이지는 않는다. 다만 아직까지는 함수나 실행코드가 통신을 통해 전달되어 실행되는 것은 확인하지 못하였다. 보안상 문제도 있겠지만 사실 꼭 그렇게 할 필요가 있을까...생각도 들긴하다..

다행히 AS3로 넘어오면서 크게 바뀌거나 외형적으로 달라진 부분은 별로 없지만 allowDomain은 조금 달라졌다고 한다. 예전에는 콜벡형태로 호출하여 LocalConnection객체가 받으면 자동으로 호출되는 방식이였지만,
지금은 LocalConnection에 별도로 명시하여 허용/거부를 설정한다.

허용정책은 allowDomain()allowInsecureDomain()가 있다
* allowDomain() 는 https로 통신을 한다.
* allowInsecureDomain()는 http로 통신을 하며 누군가 볼 수 있어 보안에 취약하다.


설정은 allowDomain("butterguy.tistory.com")와 같이하며 같은 도메인을 등록(기본상태)시는 LocalConnection.domain을 설정하면 된다.
Posted by 버터백통