LocalConnection 클래스를 사용하면 fscommand() 메서드나 JavaScript를 사용하지 않고 다른 SWF 파일에 명령을 보낼 수 있는 SWF 파일을 개발할 수 있습니다. LocalConnection 객체는 동일한 클라이언트 시스템에서 실행되는 SWF 파일 간에만 통신할 수 있습니다. 하지만 서로 다른 응용 프로그램에서 실행되는 경우는 가능합니다. 예를 들어 프로젝터에서 로컬 정보를 유지하고 원격으로 브라우저 기반 SWF 파일에 연결한 상태로 파일 브라우저에서 실행되는 SWF 파일과 프로젝터에서 실행되는 SWF 파일이 정보를 공유할 수 있습니다. 프로젝터는 독립 실행형 응용 프로그램으로 실행할 수 있는 형식으로 저장된 SWF 파일로, 실행 파일 내에 Flash Player가 포함되어 있으므로 Flash Player를 설치할 필요가 없습니다.
LocalConnection 객체는 다음과 같이 여러 ActionScript 버전을 사용하여 SWF 간에 통신하는 데 사용할 수 있습니다.
Flash Player는 다른 버전의 LocalConnection 객체 간의 통신을 자동으로 처리합니다.
LocalConnection 객체를 가장 간단하게 사용할 수 있는 방법은 동일한 도메인 또는 동일한 AIR 응용 프로그램에 위치한 LocalConnection 객체 간 통신만 허용하는 것입니다. 그러면 보안 문제에 대해 걱정하지 않아도 됩니다. 서로 다른 도메인 사이에서 통신해야 하는 경우, 보안 문제를 해결할 수 있는 몇 가지 방법이 있습니다. 자세한 내용은
Adobe Flash Platform용 ActionScript 3.0 참조 설명서
에 나열된
LocalConnection
클래스의
allowDomain()
및
domain
항목과
send()
메서드의
connectionName
매개 변수에 대한 설명을 참조하십시오.
LocalConnection 객체를 사용하여 하나의 SWF 파일에 포함된 데이터를 송수신할 수 있으나 좋은 방법은 아닙니다. 대신 공유 객체를 사용하십시오.
LocalConnection 객체에 콜백 메서드를 추가하는 방법은 다음 세 가지입니다.
-
LocalConnection 클래스를 하위 클래스로 사용하고 메서드 추가
-
LocalConnection.client
속성을 이 메서드를 구현하는 객체로 설정
-
LocalConnection을 확장하는 동적 클래스를 만들고 동적으로 메서드 추가
콜백 메서드를 추가하는 첫 번째 방법은 LocalConnection 클래스를 확장하는 것입니다. 동적으로 사용자 정의 클래스를 LocalConnection 인스턴스에 추가하지 않고 사용자 정의 클래스 내에 메서드를 정의합니다. 이 방법은 다음 코드에서 확인할 수 있습니다.
package
{
import flash.net.LocalConnection;
public class CustomLocalConnection extends LocalConnection
{
public function CustomLocalConnection(connectionName:String)
{
try
{
connect(connectionName);
}
catch (error:ArgumentError)
{
// server already created/connected
}
}
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
CustomLocalConnection 클래스의 새 인스턴스를 만들려면 다음 코드를 사용할 수 있습니다.
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
콜백 메서드를 추가하는 두 번째 방법은
LocalConnection.client
속성을 사용하는 것입니다. 다음 코드와 같이 사용자 정의 클래스를 만들고 새 인스턴스를
client
속성에 할당하는 것입니다.
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
LocalConnection.client
속성은 호출하면 안 되는 객체 콜백 메서드를 나타냅니다. 앞의 코드에서
client
속성은 사용자 정의 클래스 CustomClient의 새 인스턴스로 설정되었습니다.
client
속성의 기본값은 현재 LocalConnection 인스턴스입니다. 윈도우 하나의 버튼이 두 번째 윈도우의 보기를 전환하는 응용 프로그램에서 메서드 설정은 같지만 다르게 작동하는 두 개의 데이터 핸들러가 있는 경우
client
속성을 사용할 수 있습니다.
CustomClient 클래스를 만들려면 다음 코드를 사용할 수 있습니다.
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
동적 클래스를 만들고 동적으로 메서드를 추가하는 등 콜백 메서드를 추가하는 세 번째 방법은 다음 코드에서 보듯이 이전 버전의 ActionScript에서 LocalConnection 클래스를 사용하는 것과 매우 비슷합니다.
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
다음 코드를 사용하여 이 클래스에 콜백 메서드를 동적으로 추가할 수 있습니다.
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
앞에서 설명한 콜백 메서드 추가 방법은 코드를 옮기기가 매우 어려우므로 사용하지 않는 것이 좋습니다. 뿐만 아니라 동적 속성에 액세스하는 경우 봉인된 속성에 액세스하는 경우보다 속도가 크게 느리므로 이 방법을 사용하여 로컬 연결을 만들면 성능 문제가 발생할 수 있습니다.
isPerUser 속성
Mac 컴퓨터에 둘 이상의 사용자가 로그인한 경우 발생하는 충돌을 해결할 수 있도록
isPerUser
속성이 Flash Player(10.0.32)와 AIR(1.5.2)에 추가되었습니다. 다른 운영 체제에서는 로컬 연결의 범위가 항상 개별 사용자로 제한되어 왔으므로 이 속성이 무시됩니다.
isPerUser
속성은 새로운 코드에서
true
로 설정되어야 합니다. 그러나 이전 버전과의 호환성을 위해 기본값은 현재
false
입니다. 이후 버전의 런타임에서는 기본값이 변경될 수 있습니다.