플래시에서 외부 인터페이스를 사용합니다
-
03-07-2019 - |
문제
외부 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/입니다.