Actionscript3

ExternalInterface.callの使い方を記録

Tweet
Actionscript2でも使える、ExternalInterfaceはjavascriptとActionscriptの通信に使うことが多いと思いますが、
また久しぶりにExternalInterfaceを使う機会があったので、記録しておきます。
まず、ExternalInterfaceのメソッドとしては、
addCallBack、callがあるのですが、僕は単純に
呼び出す側 -> 呼び出される側
swf (actionscript) -> js (javascript) : ExternalInterface.call();
js (javascript) -> swf (actionscript):ExternalInterface.addCallBack();
と覚えています。
で、その中でも今日は、ExternalInterface.call()の記録です。
ExternalInterface.call( “呼び出したいjsの関数名” [jsの関数に持たせたい引数,,,,,] );
という風に使います。
例えば、swf内にある、aryという配列をjsのalertArrayという関数に渡すとしましょう。
swfではActionscriptをこんな風に書いておきます。
注:下にあるサンプルには、全角スペースが含まれていますので、実際に使う時は全角スペースを削除して下さい。
swf ————————————————–
import flash.external.ExternalInterface;  //
import flash.events.SecurityError;  //エラーに対処するため
var ary:Array = [“これはエラー”, “番号:2”]:
if( ExternalInterface.available){ //一応ExternalInterfaceが使えるかを確認
 try{
  ExternalInterface.call( “alertArray”, ary );
 }
 catch(e:SecurityError){
  /*
   セキュリティエラーは、許可されていないところへ接続しようとした場合などに起こります。
   例:crossdomain.xmlが存在しない外部ドメインへURLLoaderなどで接続しようとした、など
  */
  //セキュリティエラーの場合の処理(エラーメッセージを出力するとか)
  
 }
 catch(e:Error){
  //それ以外のエラーが起きた場合(同じくエラーメッセージを出力するとか)
  
 }
}
try、catchでくくっておかないと、実行時にエラーが出たり、強制終了しないといけなくなったりするので注意っす!
js(というかHTML内)———————————–
<html xmlns=”http://www.w3.org/1999/xhtml”; xml:lang=”ja” lang=”ja”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=shift_jis” />
<title>so</title>
<script language=”javascript”>AC_FL_RunContent = 0;</script>
<script src=”AC_RunActiveContent.js” language=”javascript”></script>
<script type=”text/javascript”>
//この関数をswfから呼び出します
function alertArray(ary){
alert( ary[0] + ” : ” + ary[1] );
}
</script>
</head>
<body bgcolor=”#ffffff”>
<script language=”javascript”>
if (AC_FL_RunContent == 0) {
alert(“このページでは […]

Continue Reading