在flash跟javascript間互相傳值
因為flash跟javascript都是前端的script language,所以會有機會遇到需要兩邊互傳資料的情況,研究了一下把他整理出來。
Flash的ExternalInterface就是用來與外部溝通的,他有兩個重要的方法:
這個是把值丟給javascript。
ExternalInterface.call("jsMethod", value);
這個則是接收javascript的值。
ExternalInterface.addCallback("jsCallMethod",asCallback);
所以我們在flash內新增一個getInput_txt的文字框來接收js傳來的值,一個sendInput_txt去輸入要丟給js的值,然後一個sendToJS_btn的按鈕把值給送出去。
接下來在actionscript輸入以下程式碼:
- sendToJS_btn.addEventListener(MouseEvent.CLICK,onSendButtonClicked);
- ExternalInterface.addCallback("sendToActionScript",getFromJavaScript);
- function onSendButtonClicked(e){
- ExternalInterface.call("getFromActionScript", sendInput_txt.text);
- sendInput_txt.text="";
- }
- function getFromJavaScript(data){
- getInput_txt.text="JS say: "+String(data);
- }
然後準備這樣的html:
<div id="jsContent">
<div id="getInput">Flash say:</div>
<input id="setInput" style=" border:1px solid #666"; />
<button id="sendToFlash">send</button>
</div>
- $(document).ready(function(){
- //send infomation to flash
- function sendToActionScript(data){
- var flashTarget=swfobject.getObjectById("flashContent");
- flashTarget.sendToActionScript(data);
- }
- $("#sendToFlash").click(function(){
- var setInput=$("#setInput").val();
- sendToActionScript(setInput);
- $("#setInput").val("");
- });
- });
- //get information from flash
- function getFromActionScript(data){
- $("#getInput").empty().append("Flash say: "+data);
- }
這樣就可以在flash跟javascript間互相溝通了。
Demo
參考資料:
關於ExternalInterface.addCallback
ActionScript与JavaScript通信
搭配網頁容器使用外部 API
[AS3][JavaScript] Facebook 發佈訊息的方法
留言