앞서 동기식으로 자바스크립트 함수를 호출하는 ExternalInterface를 이용하여 함수를 호출하였는데 문제는 동기식이라는 것이다. ExternalInterface() 보다는 함수 연동이 약하기는 하지만 비동기식으로 자바스크립트를 호출하거나 url경로를 호출하는 navigateToURL()라는 것이 있다.

navigateToURL( URLRequest , window )으로 URLRequest와 같이 사용하며,
 window의 값은 우리가 자주 사용하는 윈도우 이름(경로)을 설정한다.
_self : 현재 윈도우의 현재 프레임을 지정합니다.
_blank : 새 윈도우를 지정합니다.
_parent : 현재 프레임의 부모를 지정합니다.
_top : 현재 윈도우의 최상위 프레임을 지정합니다.


Posted by 버터백통
AS3는  HTML에 설정되거나 로드된 자바스크립트를 호출 할 수 있으며 또한 HTML의 자바스크립트는 SWF에 설정된 AS3의 함수를 호출할 수 있다.

이 각각은 ExternalInterface를 통하여 연결되는데 ExternalInterface객체는 동기식 호출이 되므로 무거운 실행문은 html의 다른 함수에서 처리하게 하고  SWF에서 바라보는 자바스크립트 함수는 실행 처리가 가볍게 만들어 주도록 해야 한다.

SWF에서 자바스크립트 호출
ExternalInterface.call( "호출할 함수명" , 파라미터 값 );
HTML에 포함된 자바스크립트 함수는 ExternalInterface.call()을 사용하여 호출한다.

자바스크립트에서 SWF함수 호출
ExternalInterface.addCallback( "호출할 함수명" , 처리함수 );
자바스크립트에서 호출할 SWF 객체의 ID뒤에 호출할 함수명을 실행하면 SWF내부에 addCallback()으로 설정된 처리함수가 실행한다.






Posted by 버터백통

서버와 클라이언트간 통신 방법 중에 웹서비스와 리모트 객체가 있다. 이들은 복잡한 데이터를 간단하게 전달하거나 클라이언트가 서버의 메서드를 쉽게 비동기 요청을 할 수 있도록 한다.

[ 웹서비스를 이용한 호출 ]
웹서비스 객체는 플렉스 컴포넌트인 WebService를 이용하여 객체의 메서드를 호출 할 수 있다. 모든 웹서비스는 WSDL(Web Service Description Language : 웹 서비스 기술 언어)을 가지고 있다.
WebService객체의 wsdl 속성을 사용하여 WebService객체에 WSDL의 경로를 설정한다.
WebService.wsdl = "WSDL을 명시한 서버사이드 스크립트 경로";

그리고 명시된 WSDL의 데이터를 loadWSDL()메서드를 통해 호출한다.
호출에 성공하면 LoadEvent이벤트의 "LOAD"가 발생하고 실패하면 FaultEvent이벤트의 "FAULT"
실행한다.

WebService객체에 위임된 변수는 이제 웹서비스의 메서드를 호출 할 수 있게 된다. 가령 서버의 WSDL에 평균값을 구하여 리턴하는 메서드가 있으면 아래와 같이 호출하면 된다.
WebService.getAverages();
그리고 서버에서 실행된 결과를 받기 위해서는 ResultEvent이벤트를 사용한다.
WebService.getAverages.addEventListener( ResultEvent.RESULT , onGetAverages );
onGetAverages() 함수에는 리턴된 값을 처리하는 명령문을 사용하면 된다.



[ 플래시 리모트객체를 이용한 호출 ]
리모트 객체는 NetConnection()를 사용하여 서비스의 메서드등의 정보등을 관리하는 서버사이드에 connect()를 하여 길을 연다.
NetConnection.connect( "AMF 플래시 리모팅 게이트 웨이 경로" )

연결된 NetConnection의 위임 객체는 서버의 메서드를 call() 메서드를 이용하여 호출하며 응답객체 Responder()를 만들어 호출시 등록한다. 

Responder( 결과함수 , 상태함수 )는 성공하여 결과를 리턴 할때나 에러,실패등의 상태를 실행할 함수를
설정한다.
var res:Responder = new Responder( onResult , onError );
NetConnection.call("호출할 메서드",  res);
마찬가지로 호출한 메서드에 대한 결과를 서버에서 받으면 처리함수(onResult )에서 처리하면 된다. 각 함수의 파라미터는 Object를 받는다.

Posted by 버터백통