æç« æ¥æºï¼http://www.cnblogs.com/liuzhong/archive/2011/06/27/2091294.html
ä¸ãå¨JavaScriptä¸è°ç¨Flexæ¹æ³
å¨Flexä¸å¯ä»¥ç¨ExternalInterfaceæ¥è°ç¨Flexçæ¹æ³ï¼é徿¯
1.éè¿å¨Flexåºç¨å¯è°ç¨æ¹æ³åè¡¨ä¸æ·»å æå®çå¬ç¨æ¹æ³ã å¨Flexåºç¨ä¸éè¿è°ç¨addCallback()å¯ä»¥æä¸ä¸ªæ¹æ³æ·»å å°æ¤å表ä¸ãaddCallbackå°ä¸ä¸ªActionScriptçæ¹æ³æ³¨å为ä¸ä¸ªJavaScriptåVBScriptå¯ä»¥è°ç¨çæ¹æ³ã
addCallback()彿°çå®ä¹å¦ä¸ï¼
addCallback(function_name:String, closure:Function):void
function_nameåæ°å°±æ¯å¨Html页é¢ä¸èæ¬è°ç¨çæ¹æ³åãclosureåæ°æ¯è¦è°ç¨çæ¬å°æ¹æ³ï¼è¿ä¸ªåæ°å¯ä»¥æ¯ä¸ä¸ªæ¹æ³ä¹å¯ä»¥æ¯å¯¹è±¡å®ä¾ã
举个ä¾åï¼
<mx:Script>
import flash.external.*;
public function myFunc():Number {
return 42;
}
public function initApp():void {
ExternalInterface.addCallback("myFlexFunction",myFunc);
}
</mx:Script>
2.é£ä¹å¨Html页é¢ä¸ï¼åè·å¾SWF对象çå¼ç¨ï¼ä¹å°±æ¯ç¨<object .../>声æçSwfçId屿§ ï¼æ¯å¦è¯´æ¯MyFlexAppãç¶åå°±å¯ä»¥ç¨ä»¥ä¸æ¹å¼è°ç¨Flexä¸çæ¹æ³ã
<SCRIPT language='JavaScript' charset='utf-8'>
function callApp() {
var x = MyFlexApp.myFlexFunction();
alert(x);
}
</SCRIPT>
<button οnclick="callApp()">Call App</button>
äºãå¨Flexä¸è°ç¨ JavaScript
ä½ å¯ä»¥è°ç¨Html页é¢ä¸çJavaScriptï¼éè¿ä¸JavaScriptç交äºï¼å¯ä»¥æ¹åStyleï¼è°ç¨è¿ç¨æ¹æ³ãè¿å¯ä»¥å°æ°æ®ä¼ éç»Html页é¢ï¼å¤çååè¿åç»Flexï¼å®æè¿æ ·çåè½ä¸»è¦æä¸¤ç§æ¹æ³ï¼ExternalInterface()ånavigateToUrl()ã
å¨Flexä¸è°ç¨JavaScriptæç®åçæ¹æ³æ¯ä½¿ç¨ExternalInterface()ï¼å¯ä»¥ä½¿ç¨æ¤APIè°ç¨ä»»æJavaScriptï¼ä¼ éåæ°ï¼è·å¾è¿åå¼ï¼å¦æè°ç¨å¤±è´¥ï¼Flexæåºä¸ä¸ªå¼å¸¸ã
ExternalInterfaceå°è£äºå¯¹æµè§å¨æ¯æçæ£æ¥ï¼å¯ä»¥ç¨available屿§æ¥æ¥çã
ExternalInterfaceç使ç¨é常ç®åï¼è¯æ³å¦ä¸ï¼
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
åæ°function_nameæ¯è¦è°ç¨çJavaScriptç彿°åï¼åé¢çåæ°æ¯JavaScriptéè¦çåæ°ã
举个ä¾å说æå¦ä½è°ç¨JavaScript彿°
Flexåºç¨ä¸ï¼æ·»å å¦ä¸æ¹æ³ï¼
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
import flash.external.*;
public function callWrapper():void {
var f:String = "changeDocumentTitle";
var m:String = ExternalInterface.call(f,"New Title");
trace(m);
}
</mx:Script>
<mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页é¢ä¸æå¦ä¸å½æ°å®ä¹ï¼
<SCRIPT LANGUAGE="JavaScript">
function changeDocumentTitle(a) {
window.document.title=a;
return "successful";
}
</SCRIPT>
ä¸ãå¨JavaScriptä¸è°ç¨Flexæ¹æ³
å¨Flexä¸å¯ä»¥ç¨ExternalInterfaceæ¥è°ç¨Flexçæ¹æ³ï¼é徿¯
1.éè¿å¨Flexåºç¨å¯è°ç¨æ¹æ³åè¡¨ä¸æ·»å æå®çå¬ç¨æ¹æ³ã å¨Flexåºç¨ä¸éè¿è°ç¨addCallback()å¯ä»¥æä¸ä¸ªæ¹æ³æ·»å å°æ¤å表ä¸ãaddCallbackå°ä¸ä¸ªActionScriptçæ¹æ³æ³¨å为ä¸ä¸ªJavaScriptåVBScriptå¯ä»¥è°ç¨çæ¹æ³ã
addCallback()彿°çå®ä¹å¦ä¸ï¼
addCallback(function_name:String, closure:Function):void
function_nameåæ°å°±æ¯å¨Html页é¢ä¸èæ¬è°ç¨çæ¹æ³åãclosureåæ°æ¯è¦è°ç¨çæ¬å°æ¹æ³ï¼è¿ä¸ªåæ°å¯ä»¥æ¯ä¸ä¸ªæ¹æ³ä¹å¯ä»¥æ¯å¯¹è±¡å®ä¾ã
举个ä¾åï¼
<mx:Script>
import flash.external.*;
public function myFunc():Number {
return 42;
}
public function initApp():void {
ExternalInterface.addCallback("myFlexFunction",myFunc);
}
</mx:Script>
2.é£ä¹å¨Html页é¢ä¸ï¼åè·å¾SWF对象çå¼ç¨ï¼ä¹å°±æ¯ç¨<object .../>声æçSwfçId屿§ ï¼æ¯å¦è¯´æ¯MyFlexAppãç¶åå°±å¯ä»¥ç¨ä»¥ä¸æ¹å¼è°ç¨Flexä¸çæ¹æ³ã
<SCRIPT language='JavaScript' charset='utf-8'>
function callApp() {
var x = MyFlexApp.myFlexFunction();
alert(x);
}
</SCRIPT>
<button οnclick="callApp()">Call App</button>
äºãå¨Flexä¸è°ç¨ JavaScript
ä½ å¯ä»¥è°ç¨Html页é¢ä¸çJavaScriptï¼éè¿ä¸JavaScriptç交äºï¼å¯ä»¥æ¹åStyleï¼è°ç¨è¿ç¨æ¹æ³ãè¿å¯ä»¥å°æ°æ®ä¼ éç»Html页é¢ï¼å¤çååè¿åç»Flexï¼å®æè¿æ ·çåè½ä¸»è¦æä¸¤ç§æ¹æ³ï¼ExternalInterface()ånavigateToUrl()ã
å¨Flexä¸è°ç¨JavaScriptæç®åçæ¹æ³æ¯ä½¿ç¨ExternalInterface()ï¼å¯ä»¥ä½¿ç¨æ¤APIè°ç¨ä»»æJavaScriptï¼ä¼ éåæ°ï¼è·å¾è¿åå¼ï¼å¦æè°ç¨å¤±è´¥ï¼Flexæåºä¸ä¸ªå¼å¸¸ã
ExternalInterfaceå°è£äºå¯¹æµè§å¨æ¯æçæ£æ¥ï¼å¯ä»¥ç¨available屿§æ¥æ¥çã
ExternalInterfaceç使ç¨é常ç®åï¼è¯æ³å¦ä¸ï¼
flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
åæ°function_nameæ¯è¦è°ç¨çJavaScriptç彿°åï¼åé¢çåæ°æ¯JavaScriptéè¦çåæ°ã
举个ä¾å说æå¦ä½è°ç¨JavaScript彿°
Flexåºç¨ä¸ï¼æ·»å å¦ä¸æ¹æ³ï¼
<mx:Script>
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
import flash.external.*;
public function callWrapper():void {
var f:String = "changeDocumentTitle";
var m:String = ExternalInterface.call(f,"New Title");
trace(m);
}
</mx:Script>
<mx:Button label="Change Document Title" click="callWrapper()"/>
</mx:Application>
Html页é¢ä¸æå¦ä¸å½æ°å®ä¹ï¼
<SCRIPT LANGUAGE="JavaScript">
function changeDocumentTitle(a) {
window.document.title=a;
return "successful";
}
</SCRIPT>