ง่ายมากมายด้วย ExternalInterface
import flash.external.ExternalInterface; ... ExternalInterface.call("your_javascript_function()");
จากเดือนที่แล้วมีบทความ ทำให้ As3 และ Javascript คุยกันได้ ไอเทคนิคนี้เราได้เอาไปใช้กับ project UMBO ครับ ตอนอยู่บน localhost ก็ทำงานได้ปกติดีครับ แต่เมื่อเอาขึ้นเซอร์เวอร์ไปแบบแบ่งเป็นหลายๆเซอร์เวอร์เนี่ย ทำให้เกิดปัญหาขึ้นมา เพราะ ตัว flash กับ website อยู่คนละเซอร์เวอร์กัน
เหตุการณ์อย่างนี้ ต่อให้ตั้ง attribute allowScriptAccess ของ flash object เป็น always ก็ไม่สามารถทำงานได้
วิธีที่จะทำให้ flash/flex นี้ ยอมรับ javascript แบบ cross-domain ได้ จะต้องไปเพิ่มโค๊ด
Security.allowDomain( “www.example.com” );
ไปก่อนที่จะรับ javascript แบบในบทความ `ทำให้ As3 และ Javascript คุยกันได้`
http://blog.code-head.com/calling-a-javascript-function-from-actionscript-3-flash
ง่ายมากมายด้วย ExternalInterface
import flash.external.ExternalInterface; ... ExternalInterface.call("your_javascript_function()");
จะเอาค่า Return ก็ได้
var x:int = ExternalInterface.call("get_x()");
ส่ง Parameter กะได้
var retval:int = ExternalInterface.call("some_js_function", "the-argument");
http://codingforums.com/showthread.php?t=152181
Javascript
// Provides the proper address for the movie depending on browser function getFlashMovie(movieName) { var isIE = navigator.appName.indexOf("Microsoft") != -1; return (isIE) ? window[movieName] : document[movieName]; } function playMovie() { getFlashMovie("video").JStoASviaExternalInterface("start"); }
Action Script
function getTextFromJavaScript(str:String):Void { if (str = "start") { startVideo(); } } ExternalInterface.addCallback("JStoASviaExternalInterface", this, getTextFromJavaScript);