test.html
test.mxml
test.swf
- flex 에서 xxxxjavascript 호출 하기
flex 단
1. import flash.external.ExternalInterface;
2. ExternalInterface.call("flexTojava",null);
- flexTojava 는 java script 에 있는 함수 명이다.
- null 있는 곳에 파라미터를 쓴다.
ExternalInterface.call("flexTojava",null);
ExternalInterface.call("flexTojava","호호");
java script
1.<script language="xxxxjavascript">
<!--
function flexTojava() {
alert("flex에 의해 호출 당함");
}
//-->
</script>
-xxxxjavascript 에서 flex 호출 하기
xxxxjavascript 단
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="CF005" width="100%" height="100%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="test.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="test.swf" quality="high" bgcolor="#869ca7"
width="790" height="635" name="IFRS" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
- 위에 보면 object 안에 id로 CF005 로 되어있는 것을 확인 할 수가 있다.
<script language="xxxxjavascript">
<!--
function javaToflex() {
CF005.callASFn("하하하하");
}
//-->
</script>
- CF005는 object 아이디고 그 밑에 flex 쪽 함수 명을 써준다.(정확히 말하면 별칭이라고 하겠다.)
flex 단
플랙스 초기 실행 이벤트 creationComplete="init()" 이런 식으로 시작 할 때 동작 할 함수를 지정해준다.
public function init():void{
if (ExternalInterface.available){
try {
// 외부에서 callASFn 이라는 메시지로 받음
// 받은 메시지에 따른 callAS 함수를 호출
ExternalInterface.addCallback("callASFn", callAS);
} catch (error:SecurityError){
Alert.show(error.message);
} catch (error:Error){
Alert.show(error.message);
}
}
}
- 위 ExternalInterface.addCallback("callASFn", callAS);
보면 callASFn 은 java 쪽에서 호출 당할 이름, 즉 별칭을 지정해 주면 되고
callAS 는 flex 쪽 실행 할 함수명을 지정해 주면 된다.
// 외부 자바스립트로 부터 불려지기위한 함수
public function callAS(param:String):void{
Alert.show("xxxxjavascript에서 불렀지요. param=" + param);
}
------------------------------------------------------------------------
만약 웹 같은 ip 에 있지 않다면 보안 에러가 날것이다.
웹서버에 올려서 확인 하기 바란다.