ง่ายมากมายด้วย ExternalInterface
import flash.external.ExternalInterface; ... ExternalInterface.call("your_javascript_function()");
เป็นบั๊กที่เกิดเฉพาะกับ browser เจ้าปัญหาเช่นเคย คราวนี้เป็น bug เกี่ยวกับการเปลี่ยนหน้าด้วย javascript
ซึ่งปกติเราจะทำกันอย่างนี้
document.location.href = “http://www.levelup.in.th/”;
เข้าไปใน code ด้วย แต่คราวนี้ดันทำให้ browser
try {
document.location.href = site_url(u);
window.event.returnValue = false;
}catch(e){}
Firefox และอื่นๆ
style = “border:0px;overflow:hidden;”
IE
border=0 scrolling=”no” frameborder=”0″
สรุปแล้วรวมได้ดังนี้
<iframe src=”" border=0 scrolling=”no” frameborder=”0″ style = “border:0px;overflow:hidden;”></iframe>
ฝากไว้เล็กๆเกียวกับ Javascript
ว่าด้วยเรื่อง function เกี่ยวกับการสั่ง function แต่ไม่สั่งทันทีต่ให้มิ้งเวลาไปอีกพักก่อนจะเริ่มทำงาน ซึ่งมีประโยชน์ในการทำ animation และ การหน่วงจังหวะ
ตัวอย่าง โค้ด
var timer1 =setTimeout(function() { alert(”Test”); }, 1000);
var timer1 =setTimeout(run, 1000);
var timer1 =setTimeout(”alert(’1′)”, 1000);
parameter แรกจะใส่้ได้สองแบบ คือเป็น string ภาษา javascript และอีกแบบจะใส่ function ลงไปตรงๆ
ส่วน parameter ที่สองจะเป็นเรื่องเวลาที่จะให้หน่วงไว้ก่อนจะเริ่มทำงาน โดยหน่วยจะเป็น 1/1000 วินาที (1000 คือ 1 วินาที)
ส่วนหากจะยกเลิกการทำงานที่สั่งไว้กับ setTimeout ข้างต้น ทำได้ด้วย
clearTimeout(timer1)
ผ่านทาง H ow to cancel/kill window.setTimeout before it happens on the client? - Stack Overflow.
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);
อันนี้ก็มาจากการพยายามลดขนาดข้อมูลที่ต้องส่งไปมาระหว่าง Php กับ Flash ซึ่งเป็น Text ล้วนๆ ซึ่งก็ใหญ่ไม่ใช่เล่นเหมือนกัน
เลยพยายามลองใช้ gzip ที่มีติดอยู่กับ php เป็น default อยู่แล้ว
ประเด็นคือ gzip ของ php มี function เยอะมากมาย ประมาณ 3-4 แบบได้
ส่วน as3 ก็ไม่รู้ว่ามีหรือเปล่า ต้องหาอะไรเพิ่มมั้ย ก็เลยต้องศึกษาเพิ่มกันหน่อย
หลังจากวิจัยมาเกือบวัน ก็สรุปได้ผลตามนี้