2013-04-10 2 views
0

플래시로 전달 된 객체 내에서 JS 함수를 호출하려고합니다.AS3에서 전달 된 객체에서 JS 함수 호출

JS 번호 :

<script> 
    function initContext() { 
     flashMovie.setContext(ctx); 
    } 

    var ctx = new Object(); 
    ctx.saySomething = function(msg) { 
     alert(msg); 
    } 
</script> 

AS3 코드 :

if (ExternalInterface.available) { 
    ExternalInterface.addCallback("setContext", say); 
    ExternalInterface.call("initContext"); 
} 

그래서 제 AS3는 JS initContext 및 JS initContext가 다음 객체를 호출 setContext 부른다. 지금까지이 작품. 나는 전달 된 개체에서 기능 saySomething를 호출하는 방법에 붙어 :

private function say(context:Object) { 
    ExternalInterface.call(???); 
} 

답변

1

ActionScript를 내부적으로 자바 스크립트를 실행할 수 없기 때문에 당신은, 당신은 액션 스크립트에 전달 된 실제 CTX 객체에 saySomething 자바 스크립트 기능을 실행할 수 없습니다 .

JavaScript와 ActionScript간에 개체를 보내면 직렬화/역 직렬화되고 JavaScript 개체에서 ActionScript 개체로 또는 그 반대로 변환되지만 saySomething 함수/메서드는 ActionScript 함수로 변환되지 않습니다. 실행 코드가 변환되지 않습니다. 문자열, 숫자, 부울, 배열 및 객체와 같은 기본 유형은 변환되지만 기능은 변환하지 않습니다.

또한 ctx는 JavaScript에서 만든 개체에 대한 참조가 아니며 개체의 복사본 (직렬화 및 비 직렬화)이됩니다.

관련 문제