문제

외부 JavaScript 함수 호출을 만들기 위해 플래시를 편집하려고하지만 성공하지 못했습니다. 내 Actionscript 2.0 코드는 다음과 같습니다.

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

그리고 여기 내 JavaScript가 있습니다.

function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

나는 많은 예를 보았고 주로 사용에 대해 혼란스러워합니다. ExternalInterface.addCallback. 플래시로 반환하기 위해 JavaScript가 필요하지 않습니다. 이것이 필요합니까?

어떤 이유로 든 경고를 볼 수 없습니다. 내 코드에 문제가있는 사람이 있습니까? 일부가 있습니까? ExternalInterface 도서관이 없습니까? 또한 사용하는 가장 좋은 방법은 무엇입니까? ExternalInterface (즉, 오류 확인 등) 미리 감사드립니다 ...

도움이 되었습니까?

해결책

externalinterface.addcallback은 JavaScript가 플래시 응용 프로그램에 호출 할 수있는 것입니다. 예를 들어 비디오를 시작/중지하는 HTML 버튼을 원한다면 명명 된 메소드에 대한 콜백을 추가하고 [FlashObject] .callback 메소드 이름을 호출하는 것보다 JS가 가능합니다.

응용 프로그램에서 외부 인터페이스 메소드를 추가하는 가장 좋은 방법은 앱의 각 상호 작용 사례에 대한 JS 커뮤니케이션을 담당하는 클래스를 설정하는 것입니다. 예를 들어:

public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

외부 인터페이스를보다 직접 테스트하려면 호출을 시도하십시오

ExternalInterface.call("alert", "Hello World!");

다른 팁

다른 사람들이 Johan의 게시물에 대한 의견에서 말했듯이 외부 인터페이스를 확인하여 외부 인터페이스를 사용할 수 있는지 먼저 확인해야합니다.

그 외에는 ... Flex 응용 프로그램을 어떻게 시작합니까? 먼저이 JavaScript가 포함 된 래퍼에 포함되어야합니다. 그것은 사소한 일입니다. 그러나 로컬 파일 시스템에서 파일로 시작하는 경우 (브라우저 URL은 파일 : //)로 시작한 경우 SWF 파일에 JavaScript 함수를 실행하는 데 필요한 권한이 있는지 확인해야합니다.

SWF 파일을 신뢰하여 파일 또는 로컬 파일의 JS와 같은 로컬 리소스에 액세스 할 수 있어야합니다. 이렇게하려면 myapp.cfg와 같은 파일을 만들고 파일의 경로를이 줄의 한 줄로 추가하십시오. 이 파일을 FlashPlayerTrust 폴더에 배치하십시오. Linux 시스템에서 이것은 ~/.Macromedia/Flash_Player/#Security/FlashPlayerTrust/입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top