External Interface 에 대한 공식 소개 [전재]

7422 단어 Flex
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#includeExamplesSummary
ExternalInterface.available 현재 Flash Player 가 외부 인 터 페 이 스 를 제공 하 는 용기 에 있 는 지 속성 을 표시 합 니 다.외부 인터페이스 가 사용 가능 하 다 면 이 속성 은 true;그렇지 않 으 면 false。External Interface 클래스 의 다른 기능 을 사용 하기 전에 현재 용기 가 외부 인터페이스 통신 을 지원 하도록 항상 검 사 를 해 야 합 니 다. 다음 과 같 습 니 다.
if (ExternalInterface.available)  {    
  // Perform ExternalInterface method calls here. 
 }

주: ExternalInterface.available 현재 용기 가 ExternalInterface 연결 을 지원 하 는 용기 형식 인지 속성 보고 합 니 다.현재 브 라 우 저 에서 자 바스 크 립 트 를 사 용 했 는 지 보고 하지 않 습 니 다.
사용 ExternalInterface.objectID 속성, Flash Player 인 스 턴 스 의 유일한 식별 자 를 확인 할 수 있 습 니 다. object 라벨 의 id 속성 또는 NPRuntime 인 터 페 이 스 를 사용 하 는 브 라 우 저 에서 embed 라벨 의 name 속성이 유일한 ID 는 브 라 우 저의 현재 SWF 문 서 를 대표 하 며 SWF 문 서 를 참조 할 수 있 습 니 다. 예 를 들 어 용기 HTML 페이지 에서 자바 스 크 립 트 함 수 를 호출 할 때 참조 할 수 있 습 니 다.Flash Player 용기 가 웹 브 라 우 저 가 아 닐 때 이 속성 은 null。
ActionScript 에서 외부 코드 호출
ExternalInterface.call() 용기 응용 프로그램의 코드 를 실행 하 는 방법 입 니 다.용기 프로그램 에서 함수 이름 을 호출 할 문자열 을 포함 하 는 인자 가 필요 합 니 다.전달 하 다 ExternalInterface.call() 방법의 다른 모든 매개 변 수 는 함수 호출 매개 변수 로 용기 에 전달 된다.
// calls the external function "addNumbers"  
// passing two parameters, and assigning that function's result 
// to the variable "result" 
 var param1:uint = 3; 
 var param2:uint = 7; 
var result:uint = ExternalInterface.call("addNumbers", param1, param2);

용기 가 HTML 페이지 라면 이 방법 은 지정 한 이름 을 가 진 자바 스 크 립 트 함 수 를 호출 합 니 다. HTML 페이지 를 포함 해 야 합 니 다. script 요소 에서 이 함 수 를 정의 합 니 다.JavaScript 함수 의 반환 값 이 ActionScript 로 전 달 됩 니 다.
 <script language="JavaScript"> // adds two numbers, and sends the result back to ActionScript    function addNumbers(num1, num2){
        return (num1 + num2);
     }  
</script>

용기 가 다른 ActiveX 용기 라면, 이 방법 은 Flash Player ActiveX 컨트롤 을 조정 합 니 다. FlashCall 사건Flash Player 는 지정 한 함수 이름과 모든 매개 변 수 를 XML 문자열 로 정렬 합 니 다.용 기 는 이벤트 대상 에 있 을 수 있 습 니 다. request 속성 에서 이 정 보 를 방문 하고 코드 를 어떻게 실행 하 는 지 확인 합 니 다.ActionScript 에 값 을 되 돌려 주기 위해 서 용기 코드 는 ActiveX 대상 을 호출 합 니 다. SetReturnValue() 방법, 결 과 를 이 방법의 매개 변수 로 전달 합 니 다.이 통신 에 사용 할 XML 형식 에 대한 자세 한 정 보 는 외부 API 의 XML 형식 을 참조 하 십시오.
용기 가 웹 브 라 우 저 든 다른 ActiveX 용기 든 호출 에 실 패 했 거나 용기 방법 이 반환 값 을 지정 하지 않 으 면 되 돌려 줍 니 다. null。호출 코드 에 접근 할 수 없 는 보안 샌 드 박스 에 환경 이 포함 되 어 있다 면 External Interface. call () 방법 은 Security Error 이상 을 일 으 킬 것 이다.포함 환경 에서 allowScriptAccess 를 사용 할 수 있 습 니 다. 이 문 제 를 해결 하기 위해 적당 한 값 을 설정 하 십시오.예 를 들 어 HTML 페이지 에서 변경 해 야 합 니 다. allowScriptAccess 값 object 화해시키다 embed 탭 의 해당 속성 입 니 다.
용기 에서 ActionScript 코드 호출
용 기 는 함수 에 있 는 ActionScript 코드 만 호출 할 수 있 고 다른 ActionScript 코드 는 호출 할 수 없습니다.용기 프로그램 에서 ActionScript 함 수 를 호출 하려 면 두 가지 작업 을 수행 해 야 합 니 다. External Interface 류 에 이 함 수 를 등록 한 다음 용기 코드 에서 이 함 수 를 호출 해 야 합 니 다.
우선, ActionScript 함 수 를 등록 하여 용기 에 사용 할 수 있 도록 표시 해 야 합 니 다.쓰다 ExternalInterface.addCallback() 방법 은 다음 과 같다.
 function callMe(name:String):String  {
    return "busy signal"; 
}
 ExternalInterface.addCallback("myFunction", callMe);

addCallback() 방법 은 두 개의 매개 변수 가 있다.첫 번 째 매개 변 수 는 String 형식의 함수 이름 입 니 다. 용 기 는 호출 할 함 수 를 알 수 있 습 니 다.두 번 째 매개 변 수 는 용기 가 정 의 된 함수 이름 을 호출 할 때 실행 할 실제 ActionScript 함수 입 니 다.이 이름 들 은 전혀 다 르 기 때문에 용기 에서 사용 할 함수 이름 을 지정 할 수 있 습 니 다. 실제 ActionScript 함수 가 서로 다른 이름 을 가지 고 있 더 라 도.이것 은 함수 이름 이 알 수 없 는 상황 에서 특히 유용 합 니 다. 예 를 들 어 익명 함 수 를 지정 하거나 실행 할 때 호출 할 함 수 를 확인 해 야 합 니 다.
External Interface 류 에 ActionScript 함 수 를 등록 하면 용 기 는 이 함 수 를 실제 호출 할 수 있 습 니 다.이 조작 을 완성 하 는 구체 적 인 방법 은 용기 의 유형 에 따라 결정 된다.예 를 들 어 웹 브 라 우 저의 자바 스 크 립 트 코드 에서 등 록 된 함수 명 을 사용 하여 ActionScript 함 수 를 호출 합 니 다. 마치 Flash Player 브 라 우 저 대상 과 같은 방법 입 니 다. object 혹시 embed 탭 의 자 바스 크 립 트 대상 방법즉, 인 자 를 전달 하고 결 과 를 되 돌려 주 는 것 은 로 컬 함 수 를 호출 하 는 것 과 같다.
 <script language="JavaScript">      // callResult gets the value "busy signal"
    var callResult = flashObject.myFunction("my name"); 
 </script>  ...  
 <object id="flashObject"...>     
  ...     
  <embed name="flashObject".../> 
  </object>

또는 데스크 톱 프로그램 에서 실행 중인 SWF 파일 에서 ActionScript 함 수 를 호출 할 때 등 록 된 함수 이름과 모든 매개 변 수 를 XML 형식의 문자열 로 정렬 해 야 합 니 다.그리고 이 XML 문자열 을 하나의 매개 변수 로 ActiveX 컨트롤 을 호출 합 니 다. CallFunction() 방법 은 실제 적 으로 이 호출 을 집행 한다.이 통신 에 사용 할 XML 형식 에 대한 자세 한 정 보 는 외부 API 의 XML 형식 을 참조 하 십시오.
어떤 경우 든 ActionScript 함수 의 반환 값 은 용기 코드 로 전 달 됩 니 다. 호출 자가 브 라 우 저 에 있 는 JavaScript 코드 일 때 값 으로 되 돌아 가 고 호출 자가 ActiveX 용기 일 때 XML 형식 문자열 로 직렬 화 됩 니 다.
외부 API XML 형식
ActionScript 와 Shockwave Flash ActiveX 컨트롤 을 탑재 한 응용 프로그램 간 의 통신 은 특정한 XML 형식 으로 함수 호출 과 값 을 인 코딩 합 니 다.외부 API 에서 사용 하 는 XML 형식 은 두 가지 로 나 뉜 다.함수 호출 을 나타 내 는 형식다른 형식 은 각 값 을 표시 하 는 데 사 용 됩 니 다.이 형식 은 함수 의 인자 와 함수 반환 값 에 사 용 됩 니 다.함수 호출 XML 형식 은 ActionScript 호출 과 ActionScript 호출 에 사 용 됩 니 다.ActionScript 에서 온 함수 호출 에 대해 Flash Player 는 XML 을 용기 에 전달 합 니 다.용기 호출 에 있어 서 Flash Player 는 용기 프로그램 이 이 형식의 XML 문자열 을 전달 해 야 합 니 다.다음 XML 세 션 은 XML 형식의 함수 호출 예 시 를 설명 합 니 다.
 
<invoke name="functionName" returntype="xml">      
    <arguments>          ... (individual argument values)    
    </arguments>  
</invoke>

루트 노드 invoke 노드이것 은 두 가지 속성 을 가지 고 있 습 니 다. name, 호출 할 함수 의 이름 을 표시 합 니 다.그리고 returntype xml。함수 호출 에 인 자 를 포함 하면 invoke 노드 가 하나 있 습 니 다. arguments 하위 노드, 이 노드 의 하위 노드 는 하나의 값 형식 (아래 설명) 을 사용 하여 형식 설정 을 한 매개 변수 값 입 니 다.
모든 값 (함수 파라미터 와 함수 반환 값 포함) 은 하나의 형식 설정 방안 을 사용 합 니 다. 실제 값 을 제외 하고 이 방안 은 데이터 형식 정보 도 포함 합 니 다.아래 표 는 ActionScript 클래스 와 이 데이터 형식의 값 을 인 코딩 하 는 XML 형식 을 보 여 줍 니 다.
ActionScript 클래스 / 값
C \ # 클래스 / 값
격식.
주석
null
null

Boolean true
bool true

Boolean false
bool false

String
string
< string > 문자열 값 < / string >
Number、int、uint
single、double、int、uint
<number>27.5</number>  <number>-12</number>

Array (요 소 는 혼합 형식 일 수 있 습 니 다)
ArrayList 나 object [] 와 같은 혼합 형식 요소 의 집합 을 허용 합 니 다.
<array>      <property id="0">          <number>27.5</number>      </property>      <property id="1">          <string>Hello there!</string>      </property>      ...  </array>

property 노드 는 각 요 소 를 정의 하고, id 속성 은 0 에서 시작 하 는 수치 색인 입 니 다.
Object
문자열 키 와 대상 값 을 포함 하 는 사전, 예 를 들 어 문자열 키 를 가 진 HashTable
<object>      <property id="name">          <string>John Doe</string>      </property>      <property id="age">          <string>33</string>      </property>      ...  </object>

property 노드 는 각 속성 을 정의 하고, id 속성 은 속성 이름 (문자열) 입 니 다.
다른 내 장 된 클래스 나 사용자 정의 클래스
<null/> or   <object></object>

ActionScript 는 다른 대상 을 null 또는 빈 대상 으로 인 코딩 합 니 다.어떤 경우 든 모든 속성 치 를 잃 어 버 립 니 다.
【 주 】: 이 표 는 예 를 들 어 ActionScript 류 를 설명 하고 같은 효 과 를 가 진 C \ # 류 도 열거 했다.단, 외부 API 는 C \ # 프로그램 뿐만 아니 라 ActiveX 컨트롤 을 지원 하 는 모든 프로 그래 밍 언어 나 실행 시 통신 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기