ASとJSは互いに通信しています


開発中によくASとJSが相互作用する場面があります.例えば、ブラウザのセキュリティ制限のため、JSはクリップボードにコンテンツをコピーする時、ブラウザによって異なります.現在の比較的良い解決策はSWFの特性を利用してASのクリップボードに内容を伝えます.ここではASとJSの相互通信を実証する簡単な例を示す.
AsJsCom.as
package {
	import flash.display.Sprite;
	import flash.external.ExternalInterface;

	public class AsJsComm extends Sprite {
		/**
		 *     
		 */
		public function AsJsComm() {
			//     AS   JS  
			ExternalInterface.addCallback('callback', callback);

			// AS JS  ( alert window   alert  )
			ExternalInterface.call('alert', 'AS: Hello JS!');
		}

		/**
		 *     
		 */
		public function callback(str:String):void {
			//       ,    JS   
			ExternalInterface.call('alert', str);
		}
	}
}
index.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AsJsComm</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
</head>
<body>
<div id="flash">
  <div id="flashObj">loading...</div>
</div>
<script type="text/javascript">
(function() {
	var id = 'flashObj',
	width = '800',
	height = '680',
	version = '9.0.0',
	expressInstallSwfUrl = '',
	flashVars = {},
	params = {
		id: id,
		allowScriptAccess: 'always',
		allowFullScreen: 'true',
		quality: 'high',
		wmode: 'opaque',
		bgcolor: '#000',
		menu: 'false'
	},
	attributes = {},
	callbackFn = function(data) {},
	swfUrl = 'AsJsComm.swf';
	swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfUrl, flashVars, params, attributes, callbackFn);
	window.onload = function() {
		// JS AS  
		document.getElementById(id).callback('JS: Nice to meet you AS!');
	};
})();
</script>
</body>
</html>
簡単な説明:
1、htmlページで正常にアクセスできるJS方法であれば、ASでは直接External Interface.callで呼び出すことができます.他の声明は必要ありません.
2、ASの中の方法はJSに呼び出さなければならないので、External Interface.addCallbackを先に呼び出して登録してください.登録の方法はhtmlページの中でflash元素のobjectオブジェクトに結び付けられます.
3、通信の時、コール方法の所属の資源のロードが完了したことを保証します.例えば、ここのJSのASの中の方法はflashに正しいロードが完了したことを要求します.
4、なくなった.